Skip to content

Instantly share code, notes, and snippets.

@zxiest
Created April 14, 2016 16:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zxiest/947fa4fab47bacacefbd1d2e357d0fcf to your computer and use it in GitHub Desktop.
Save zxiest/947fa4fab47bacacefbd1d2e357d0fcf to your computer and use it in GitHub Desktop.
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