Created
April 14, 2016 16:30
-
-
Save zxiest/947fa4fab47bacacefbd1d2e357d0fcf to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
let mapleader="\<Space>" | |
set number | |
set nopaste | |
" easymotion works with <leader><leader>s | |
" lines below allow yanking to be shared with system clipboard | |
" set clipboard^=unnamed | |
set clipboard=unnamed,unnamedplus | |
set wrapscan | |
" map rails Rcommands to something that's easier | |
noremap <Leader>m :Rmodel<CR> | |
noremap <Leader>c :Rcontroller<CR> | |
noremap <Leader>v :Rview<CR> | |
noremap <Leader>j :Rjavascript<CR> | |
noremap <Leader>g :Rmigration<CR> | |
noremap <Leader>l :Rlayout<CR> | |
" map leader p to ctrlp | |
noremap <Leader>p :CtrlP<CR> | |
noremap <Leader>cc :TComment<CR> | |
" nerdtree bindings | |
" | |
" show in NERDTree | |
noremap <Leader>ns :NERDTreeFind<CR> | |
" brolink live edit, leader r | |
noremap <Leader>r :BLReloadPage<CR> | |
noremap <Leader>R :BLReloadCSS<CR> | |
" allow vim to store undos inderminately | |
set undofile | |
set undodir=/users/abdo/.vimundo | |
" " use ultisnips with ycm | |
" let g:ycm_use_ultisnips_completer = 1 | |
" " https://github.com/SirVer/ultisnips/issues/376 | |
let g:UltiSnipsExpandTrigger = "<c-j>" | |
" " | |
" let g:UltiSnipsSnippetsDir = $HOME.'/.vim/UltiSnips/' | |
" let g:UltiSnipsSnippetDirectories=["UltiSnips"] | |
" " let g:UltiSnipsExpandTrigger="<c-b>" | |
" let g:UltiSnipsJumpForwardTrigger="<c-j>" | |
" let g:UltiSnipsJumpBackwardTrigger="<c-k>" | |
" let g:UltiSnipsListSnippets="<c-h>" | |
" | |
" let g:ycm_complete_in_comments = 1 | |
" let g:ycm_seed_identifiers_with_syntax = 1 | |
" let g:ycm_collect_identifiers_from_comments_and_strings = 1 | |
" let g:syntastic_ruby_checkers= [ 'rubylint', 'mri' ] | |
" http://stackoverflow.com/questions/21888869/how-to-make-ctrlps-search-directory-change-according-to-nerdtrees-root | |
" change directory when nerdtree or ctrlp change it | |
"let g:NERDTreeChDirMode = 2 | |
let g:ctrlp_working_path_mode = 'ra' | |
let g:ctrlp_show_hidden = 1 | |
" get password from config | |
let g:gist_use_password_in_gitconfig = 1 | |
" autocomplete show longest in order for omnicomplete to | |
" allow to tab through options | |
" menuone: show options even if there's only one option | |
:set completeopt=longest,menuone | |
" remap ctrl space to open completion | |
" c-@ is how terminal interprets c-space | |
" inoremap <C-Space> <C-x><C-o> | |
inoremap <C-@> <C-x><C-o> | |
" trigger auto complete on ctrl space | |
" :imap <leader>s <Plug>snipMateNextOrTrigger | |
" WAS THERE | |
":inoremap <tab> <Plug>snipMateNextOrTrigger | |
"let g:snips_trigger_key = '<leader>s' | |
" enable ruby code folding | |
" let g:ruby_fold = 1 | |
"set foldmethod=syntax | |
command! Wr w | BLReloadPage | |
set noautochdir | |
set ignorecase | |
set smartcase | |
"augroup BgHighlight | |
" autocmd! | |
" autocmd WinEnter * set cul | |
" autocmd WinLeave * set nocul | |
"augroup END | |
" Make easytags write a single tag file per project | |
" in the project's directory | |
:set tags=./tags; | |
" look for tag file dynamically instead of using the global tagfile | |
:let g:easytags_dynamic_files = 1 | |
:let g:easytags_async = 1 | |
" enable mouse | |
if has("mouse") | |
set mouse=a | |
endif | |
" auto save session | |
let g:session_autosave = 'yes' | |
let g:session_autosave_periodic = 0.5 | |
let g:session_autoload = 'yes' | |
" Match tags always | |
let g:mta_filetypes = { | |
\ 'html' : 1, | |
\ 'xhtml' : 1, | |
\ 'xml' : 1, | |
\ 'jinja' : 1, | |
\ 'jsx' : 1, | |
\} | |
" vim-ruby options | |
augroup rubycomplete | |
autocmd! | |
autocmd FileType ruby,eruby,slim let s:rubycomplete_debug = 1 | |
autocmd FileType ruby,eruby,slim let g:rubycomplete_rails = 1 | |
autocmd FileType ruby,eruby,slim let g:rubycomplete_buffer_loading = 1 | |
autocmd FileType ruby,eruby,slim let g:rubycomplete_classes_in_global = 1 | |
autocmd FileType ruby,eruby,slim let g:rubycomplete_include_object = 1 | |
autocmd FileType ruby,eruby,slim let g:rubycomplete_include_objectspace = 1 | |
autocmd FileType ruby,eruby,slim set omnifunc=syntaxcomplete#Complete | |
augroup END | |
" auto completion with eclim ; must start eclim server first | |
" and must install eclim | |
"let g:EclimCompletionMethod = 'omnifunc' | |
augroup ctags | |
autocmd! | |
autocmd FileType ruby,eruby,slim setlocal tags =./tags;$GEM_HOME/gems/**/tags; | |
augroup END | |
" Disable AutoCompLPop | |
"let g:acp_enableAtStartup = 0 | |
" auto reload vimrc when this file is edited | |
"autocmd! bufwritepost .vimrc.before source $MYVIMRC | |
"autocmd! bufwritepost .vimrc.after source $MYVIMRC | |
" feed / to nerdtree upon window enter | |
"autocmd WinEnter nerdtree call feedkeys('/', 't') | |
augroup winentertest | |
autocmd! | |
"autocmd WinEnter * echom "entered" | |
"autocmd WinEnter * echom @% | |
"autocmd WinEnter NERD_tree_1 echom @% .'trigger' | |
augroup END | |
augroup nerdtree_autosearch | |
au! | |
"autocmd! WinEnter NERD_tree_1 call NerdtreeAutosearchMapKeys | |
" autocmd! WinEnter * call NerdtreeAutosearchMapKeys | |
augroup END | |
"function NerdtreeAutosearchMapKeys(character) | |
"if (!exists('w:search_triggered')) | |
""imap <buffer> a :feedkeys('b', 't') | |
"endif | |
"endfunction | |
"aug Tst | |
"au! | |
"au GetChar <buffer> call Tst() | |
command! Os OpenSession | |
color vividchalk | |
"color codeschool | |
" set highlight color for search and incsearch | |
hi Search cterm=NONE ctermfg=black ctermbg=lightgrey | |
hi IncSearch cterm=NONE ctermfg=black ctermbg=white | |
hi Cursor cterm=NONE ctermfg=green ctermbg=red | |
" highlight word under cursor | |
" :autocmd CursorMoved * exe printf('match IncSearch /\V\<%s\>/', escape(expand('<cword>'), '/\')) | |
" hitting CR will clear search and do a CR | |
nnoremap <CR> :noh<CR><CR> | |
let &wrap = 0 | |
" allow vim's cursor to go beyond the last character on a line | |
set virtualedit=onemore | |
set whichwrap+=h,l,<bs> | |
set backspace=2 " allow backspace to erase through lines | |
set tabstop=2 " the width of a tab | |
set shiftwidth=2 " number of shifted colums for a TAB | |
set expandtab " expand tabs to spaces | |
"set textwidth=0 | |
"set wrapmargin=0 | |
" ruby convert old hash rocket to colon | |
let @h='xea:^[/^Hf=xxx' | |
" allow nerdtree to automatically start searching | |
" autocmd FileType feedkeys('/', 't') | |
:set incsearch | |
:set hlsearch | |
"nnoremap <leader>g :execute "Ag " . shellescape(expand("<cWORD><cr>")) . " ."<cr> | |
nnoremap <leader><left> :vertical resize -20<cr> | |
nnoremap <leader><right> :vertical resize +20<cr> | |
nnoremap <leader><up> :resize -10<cr> | |
nnoremap <leader><down> :resize +10<cr> | |
nnoremap <leader>nt :NERDTree<cr> | |
" :set foldmethod=manual | |
nnoremap <leader>[ :call feedkeys("virzf")<CR> | |
nnoremap <leader>] :call feedkeys("zo")<CR> | |
nnoremap <leader>f :call ToggleFold()<CR> | |
function ToggleFold() | |
if CurrentLineFolded() | |
call feedkeys("zo\<CR>") | |
else | |
call feedkeys("virzf\<CR>") | |
endif | |
endfunction | |
function CurrentLineFolded() | |
let folded = foldclosed(getline(".")) | |
if folded == -1 | |
return 0 | |
endif | |
return 1 | |
endfunction | |
nnoremap <Leader><cr> :call ReturnToNewLine()<cr> | |
function ReturnToNewLine() | |
let previous_char = getline(".")[col(".")-2] | |
" if there's a space before our current position, get rid of it first | |
if previous_char == ' ' | |
execute "normal! \<bs>\<esc>" | |
endif | |
execute "normal! i\<cr>\<esc>" | |
execute ":noh" | |
endfunction | |
" Zoom / Restore window. | |
function! s:ZoomToggle() abort | |
if exists('t:zoomed') && t:zoomed | |
execute t:zoom_winrestcmd | |
let t:zoomed = 0 | |
else | |
let t:zoom_winrestcmd = winrestcmd() | |
resize | |
vertical resize | |
let t:zoomed = 1 | |
endif | |
endfunction | |
command! ZoomToggle call s:ZoomToggle() | |
nnoremap <silent><Leader>E :ZoomToggle<CR> | |
" status line from http://stackoverflow.com/a/5380230/226255 | |
"set statusline= | |
"set statusline +=%1*\ %n\ %* "buffer number | |
"set statusline +=%5*%{&ff}%* "file format | |
"set statusline +=%3*%y%* "file type | |
"set statusline +=%4*\ %<%F%* "full path | |
"set statusline +=%2*%m%* "modified flag | |
"set statusline +=%1*%=%5l%* "current line | |
"set statusline +=%2*/%L%* "total lines | |
"set statusline +=%1*%4v\ %* "virtual column number | |
"set statusline +=%2*0x%04B\ %* "character under cursor | |
"set laststatus=2 " always show status line | |
set statusline =\ %<%F%*\ \|\ %L | |
" copied from: http://www.dotfiles.org/~tsukkee/.vimrc | |
" Save and load fold settings automatically | |
" Reference: http://vim-users.jp/2009/10/hack84/ | |
" Don't save options. | |
set viewoptions-=options | |
augroup autosave_folds | |
autocmd BufWinLeave * | |
\ if expand('%') != '' && &buftype !~ 'nofile' | |
\| mkview | |
\| endif | |
autocmd BufWinEnter * | |
\ if expand('%') != '' && &buftype !~ 'nofile' | |
\| silent loadview | |
\| endif | |
augroup END | |
" augroup autosave_buffer | |
" autocmd! | |
" autocmd BufWinLeave *.* mkview | |
" autocmd BufWinEnter *.* silent loadview | |
" augroup END | |
" augroup autofold_for_coffee | |
" autocmd! | |
" " http://stackoverflow.com/a/6348625/226255 in comments to this answer | |
" autocmd BufNewFile,BufReadPost *.coffee setl fdm=expr fde=getline(v:lnum)=~'->$'&&indent(v:lnum)<indent(v:lnum+1)?'a1':'s1' | |
" " autocmd BufNewFile,BufReadPost *.coffee setl foldmethod=indent | |
" augroup END | |
compiler ruby | |
setlocal makeprg=ruby\ -wc\ % | |
" let g:airline#extensions#tabline#enabled = 1 | |
" show trailing chars as dots | |
set list | |
set listchars=trail:. | |
let g:multi_cursor_next_key='<C-n>' | |
let g:multi_cursor_prev_key='<C-p>' | |
let g:multi_cursor_skip_key='<C-x>' | |
let g:multi_cursor_quit_key='<Esc>' | |
" set paste | |
" | |
" | |
" set bridgesupport files to be ruby files | |
au BufNewFile,BufRead *.bridgesupport setlocal ft=ruby | |
" | |
" disable auctocompletepop | |
" let g:acp_enableAtStartup = 0 | |
" " Use neocomplete. | |
" let g:neocomplete#enable_at_startup = 1 | |
" " Use smartcase. | |
" let g:neocomplete#enable_smart_case = 1 | |
" " Set minimum syntax keyword length. | |
" let g:neocomplete#sources#syntax#min_keyword_length = 3 | |
" let g:neocomplete#lock_buffer_name_pattern = '\*ku\*' | |
" yankstack config | |
" nmap <leader>p <Plug>yankstack_substitute_older_paste | |
" nmap <leader>P <Plug>yankstack_substitute_newer_paste | |
" | |
" | |
" let g:yank_history_size=50 | |
let g:yank_history_list=[] | |
let g:yank_history_recording=0 | |
" the print index | |
let g:yank_history_current_index = 0 | |
" let c = 1 | |
" while c <= g:yank_history_size | |
" :call add(g:yank_history_list, '') | |
" let c += 1 | |
" endwhile | |
function StoreYank() | |
if g:yank_history_recording == 1 | |
:call add(g:yank_history_list, @") | |
:exec "normal! h\<esc>" | |
else | |
:exec "normal! h\<esc>" | |
endif | |
" echo @" | |
" let c = 0 | |
" while c < g:yank_history_size - 1 | |
" let g:yank_history_list[ c + 1] = g:yank_history_list[ c ] | |
" let c += 1 | |
" endwhile | |
"let g:yank_history_list[ 0 ] = @" | |
endfunction | |
function PasteYankAtCurrentIndex() | |
if g:yank_history_recording == 1 | |
:call feedkeys("i". g:yank_history_list[g:yank_history_current_index]) | |
:exec "normal! \<esc>" | |
let g:yank_history_current_index += 1 | |
if g:yank_history_current_index > len(g:yank_history_list) - 1 | |
let g:yank_history_current_index = len(g:yank_history_list) - 1 | |
endif | |
echo g:yank_history_current_index | |
" :exec ":normal i \r\n" | |
endif | |
endfunction | |
function PasteYankHistory() | |
if g:yank_history_recording == 1 | |
:call feedkeys("i") | |
let c = 0 | |
while c < len(g:yank_history_list) | |
:call feedkeys(g:yank_history_list[c]) | |
:call feedkeys("\<cr>") | |
let c += 1 | |
endwhile | |
let g:yank_history_list=[] | |
:exec "normal! \<esc>" | |
endif | |
endfunction | |
function ResetYankHistoryIndex() | |
let g:yank_history_current_index= 0 | |
let g:yank_history_list = [] | |
" :exec ":normal i \r\n" | |
call RecordingHistoryOn() | |
echo g:yank_history_current_index | |
endfunction | |
function RecordingHistoryOn() | |
let g:yank_history_recording = 1 | |
echo g:yank_history_recording | |
endfunction | |
function RecordingHistoryToggle() | |
let g:yank_history_recording = !g:yank_history_recording | |
echo g:yank_history_recording | |
endfunction | |
" before you yank, call store yank | |
" nnoremap y y \| :call StoreYank()<cr> | |
" nnoremap y :call StoreYank()<cr>y | |
vnoremap <silent> y y :call StoreYank()<cr> | |
" leader hp (history paste) | |
nnoremap <silent> <leader>hp :call PasteYankAtCurrentIndex()<cr> | |
nnoremap <silent> <leader>hpa :call PasteYankHistory()<cr> | |
" leader r (reset) | |
nnoremap <silent> <leader>0 <esc> :call ResetYankHistoryIndex()<cr> | |
" leader h (history) | |
nnoremap <silent> <leader>h :call RecordingHistoryToggle()<cr> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment