vim config
- ~/.vim/my_configs.vim
" Usefull setting
set thesaurus+=~/js-functions.txt
set thesaurus+=~/js-lodash.txt
" Useful mappings
" vnoremap <leader>. gv:write !node<cr>
nnoremap <leader>. :!npm run build<cr>
" confilict with search result walk through
" nnoremap <leader>p :!prettier --write %<cr>
nnoremap <leader>pv gv:!prettier --write<cr>
nnoremap <leader>t :!npm run test<cr>
nnoremap <leader>e :!eslint %<cr>
" nnoremap <leader>ev gv:write !eslint --stdin<cr>
nnoremap <leader>eo :!eslint % > ~/eslint-output<cr>
" nnoremap <leader>ef :!eslint --fix %<cr>
" nnoremap <leader>x vi"UF"aF_<esc>f r_<esc>
nnoremap <F4> :!echo -ne "\e[6 q"<cr>
nnoremap <leader>gr :diffget remote<cr>
nnoremap <leader>gl :diffget local<cr>
nnoremap <leader>gb :diffget base<cr>
" replace ' to ", cursur must betwin '
nnoremap <leader>r" F'r"f'r"
nnoremap <leader>r' F"r'f"r'
nnoremap <leader>' bi'<esc>ea'<esc>
nnoremap <leader>" bi"<esc>ea"<esc>
vnoremap <leader>' <esc>`>a'<esc>`<i'<esc>
vnoremap <leader>" <esc>`>a"<esc>`<i"<esc>
nnoremap <leader>r( %r)<c-o>r(
nnoremap <leader>r{ %r}<c-o>r{
nnoremap <leader>r[ %r]<c-o>r[
nnoremap <leader>gg :silent execute "grep! -R " . shellescape(expand("<cword>")) . " ."<cr>:copen<cr>
onoremap e $
" re map jk to esc
" inoremap <esc> <nop>
inoremap jk <esc>
nnoremap yyy "*yi"<esc>
nnoremap <leader>yy "*yi'<esc>
" auto cmd group for iabbrev
augroup jsIabbrev
autocmd!
autocmd FileType javascript :iabbrev <buffer> iff if ()<left>
augroup END
" auto cmd group for js insert map
augroup jsmap
autocmd!
autocmd FileType javascript inoremap <buffer> $r return
autocmd FileType javascript inoremap <buffer> $f function
autocmd FileType javascript inoremap <buffer> $c const
autocmd FileType javascript inoremap <buffer> $i import
autocmd FileType javascript inoremap <buffer> $ed export default
autocmd FileType javascript inoremap <buffer> $ec export const
augroup END
augroup filetype_javascript
autocmd!
autocmd FileType javascript nnoremap <leader>, :!node %<esc>
augroup END
augroup filetype_sh
autocmd!
autocmd FileType sh nnoremap <leader>, :!source %<esc>
autocmd bufNewfile *.sh so ~/sh_header.vim
augroup END
augroup filetype_json
autocmd!
autocmd FileType json setlocal foldmethod=syntax
augroup END
augroup filetype_vim
autocmd!
autocmd FileType vim setlocal foldmethod=indent
autocmd FileType vim nnoremap <leader>, :so %<esc>
augroup END
" toggle fold column
nnoremap <leader>F :call FoldColumnToggle()<cr>
function! FoldColumnToggle()
if &foldcolumn
setlocal foldcolumn=0
else
setlocal foldcolumn=4
endif
endfunction
" toggle quickfix window
nnoremap <leader>Q :call QuickFixToggle()<cr>
let g:quickfix_is_open = 0
function! QuickFixToggle()
if g:quickfix_is_open
cclose
let g:quickfix_is_open = 0
else
copen
let g:quickfix_is_open = 1
endif
endfunction
function! GetPath()
echo expand("%:p")
endfunction
command! -nargs=0 GetPath call GetPath()
" form method
iabbrev _fsv form.setValue({<cr>});<esc>
iabbrev _fso form.setOption({<cr>});<esc>
iabbrev _fgv form.getValue('');<esc>
iabbrev _fgo form.getOption('');<esc>
iabbrev _fv form.validate();<esc>
iabbrev _ffn ({form, payload, props}) => {<cr>},<esc>
iabbrev _fn () => {<cr>}<esc>
~/js-lodash.txt
LLang isEmpty isString isFunction isArray isPlainObject isNumber
LMath add ceil
LArray chunk compact concat difference differenceBy differenceWith drop dropRight dropRightWhile dropWhile fill findIndex
- ~/.vim/vimrcs/plugins_config.vim
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Plugin config:
" modified from https://github.com/amix/vimrc !
"
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""""""""""""""""""""""""""
" => bufExplorer plugin
""""""""""""""""""""""""""""""
let g:bufExplorerDefaultHelp=0
let g:bufExplorerShowRelativePath=1
let g:bufExplorerFindActive=1
let g:bufExplorerSortBy='mru' " Sort by file extension.
map <leader>o :BufExplorer<cr>
""""""""""""""""""""""""""""""
" => MRU plugin
""""""""""""""""""""""""""""""
let MRU_Max_Entries = 20
map <leader>f :MRU<CR>
""""""""""""""""""""""""""""""
" => YankRing
""""""""""""""""""""""""""""""
if has("win16") || has("win32")
" Don't do anything
else
let g:yankring_history_dir = '~/.vim_runtime/temp_dirs/'
endif
""""""""""""""""""""""""""""""
" => CTRL-P
""""""""""""""""""""""""""""""
let g:ctrlp_working_path_mode = 0
let g:ctrlp_map = '<c-f>'
map <leader>j :CtrlP<cr>
map <c-b> :CtrlPBuffer<cr>
let g:ctrlp_max_height = 20
let g:ctrlp_custom_ignore = 'node_modules\|^\.DS_Store\|^\.git\|^\.coffee'
""""""""""""""""""""""""""""""
" => ZenCoding
""""""""""""""""""""""""""""""
" Enable all functions in all modes
let g:user_zen_mode='a'
""""""""""""""""""""""""""""""
" => snipMate (beside <TAB> support <CTRL-j>)
""""""""""""""""""""""""""""""
" ino <c-j> <c-r>=snipMate#TriggerSnippet()<cr>
" snor <c-j> <esc>i<right><c-r>=snipMate#TriggerSnippet()<cr>
""""""""""""""""""""""""""""""
" => Vim grep
""""""""""""""""""""""""""""""
let Grep_Skip_Dirs = 'RCS CVS SCCS .svn generated .git node_modules'
set grepprg=/usr/bin/grep\ -nH
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Nerd Tree
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
let g:NERDTreeWinPos = "left"
let NERDTreeShowHidden=0
let NERDTreeIgnore = ['\.pyc$', '__pycache__']
let g:NERDTreeWinSize=25
map <leader>nn :NERDTreeToggle<cr>
map <leader>nb :NERDTreeFromBookmark
map <leader>nf :NERDTreeFind<cr>
map <leader>nm :NERDTreeMirror<cr>
map <leader>bb :Bookmark<cr>
map <leader>bn :Bookmark
map <leader>br :BookmarkToRoot
"map <leader>bo :OpenBookmark
map <leader>bc :ClearBookmarks<cr>
"map <leader>bf :RevealBookmark
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => vim-multiple-cursors
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
let g:multi_cursor_next_key="\<C-s>"
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => surround.vim config
" Annotate strings with gettext http://amix.dk/blog/post/19678
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" vmap Si S(i_<esc>f)
" au FileType mako vmap Si S"i${ _(<esc>2f"a) }<esc>
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => vim-airline config (force color)
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
let g:airline_theme="luna"
let g:airline#extensions#tabline#enabled = 0
let g:airline_powerline_fonts=0
let g:airline#extensions#whitespace#checks = [ 'indent', 'long', 'mixed-indent-file' ]
if !exists('g:airline_symbols')
let g:airline_symbols = {}
endif
" unicode symbols
let g:airline_left_sep = '»'
let g:airline_left_sep = '▶'
let g:airline_right_sep = '«'
let g:airline_right_sep = '◀'
let g:airline_symbols.crypt = '🔒'
let g:airline_symbols.linenr = '␊'
let g:airline_symbols.linenr = ''
let g:airline_symbols.linenr = '¶'
let g:airline_symbols.maxlinenr = '☰'
let g:airline_symbols.maxlinenr = ''
let g:airline_symbols.branch = '⎇'
let g:airline_symbols.paste = 'ρ'
let g:airline_symbols.paste = 'Þ'
let g:airline_symbols.paste = '∥'
let g:airline_symbols.spell = 'Ꞩ'
let g:airline_symbols.notexists = '∄'
let g:airline_symbols.whitespace = 'Ξ'
" powerline symbols
let g:airline_left_sep = ''
let g:airline_left_alt_sep = ''
let g:airline_right_sep = ''
let g:airline_right_alt_sep = ''
let g:airline_symbols.branch = ''
let g:airline_symbols.readonly = ''
let g:airline_symbols.linenr = ''
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Vimroom
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
let g:goyo_width=100
let g:goyo_margin_top = 2
let g:goyo_margin_bottom = 2
nnoremap <silent> <leader>z :Goyo<cr>
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Git gutter (Git diff)
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
let g:gitgutter_enabled=0
nnoremap <silent> <leader>d :GitGutterToggle<cr>
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => bash-support (bash IDE)
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
let g:BASH_AuthorName = 'Leon'
let g:BASH_Email = 'xiaodi555549@gmail.com'
let g:BASH_Company = 'green'
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => emmet-vim
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
let g:user_emment_mode='n'
let g:user_emmet_leader_key=','
let g:user_emmet_install_global=0
autocmd FileType html,css EmmetInstall
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => nerdcommenter
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Add spaces after comment delimiters by default
let g:NERDSpaceDelims = 1
" Use compact syntax for prettified multi-line comments
let g:NERDCompactSexyComs = 1
" Align line-wise comment delimiters flush left instead of followiing code indentation
let g:NERDDefaultAlign = 'left'
" Set a language to use its alternate delimiters by default
" let g:NERDAltDelims_javascript = 1
" Add your own custom formats or override the defaults
" let g:NERDCustomDelimiters = { 'javascript': {'left': '/**', 'right': '*/' }}
" Allow commenting and inverting empty lines (useful when commenting a region)
let g:NERDCommentEmptyLines = 1
" Enable trimming of trailing whitespace when uncommenting
let g:NERDTrimTrailingWhitespace = 1
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Vundle
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
map <leader>pi :PluginInstall!
map <leader>pc :PluginClean<cr>
map <leader>pu :PluginUpdate
map <leader>pl :PluginList<cr>
map <leader>ps :PluginSearch
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => fugitive
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" map <leader>gs :Gstatus<cr>
" map <leader>ga :Git add .<cr>
" map <leader>gb :Git checkout
" map <leader>gc :Gcommit -m
" map <leader>gr :Git reset<cr>
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => easy-motion
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"Disable default mappings
let g:EasyMotion_do_mapping = 0
" Turn on case insensitive feature
let g:EasyMotion_smartcase = 1
"map <Leader> <Plug>(easymotion-prefix)
map <leader>mf <Plug>(easymotion-bd-f)
map <leader>ms <Plug>(easymotion-overwin-f2)
map <leader>kk <Plug>(easymotion-bd-jk)
map <leader>k <Plug>(easymotion-bd-w)
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => YcmCompleteMe
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
let g:ycm_key_list_select_completion=['<c-n>','<Down>']
let g:ycm_key_list_previous_completion=['<c-p>','<Up>']
map <leader>jd :YcmCompleter GoToDefinition<cr>
map <leader>jr :YcmCompleter GoToReferences<cr>
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Numbers
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
let g:numbers_exclude = ['nerdtree', 'bufexplorer', 'mru']
nnoremap <F3> :NumbersToggle<cr>
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Grepper
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" set search directory
" let g:grepper.dir = 'cwd'
let &statusline .= ' %{grepper#statusline()}'
let g:grepper = {}
let g:grepper.tools = ['git', 'grep']
let g:grepper.open = 1
let g:grepper.jump = 0
" open an prompt and let you input your search string and press tab can switch the search tool
nnoremap <leader>g :Grepper<cr>
" such as gsw gsi"
nmap gs <plug>(GrepperOperator)
" visual and select mode just press gs
xmap gs <plug>(GrepperOperator)
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => ultisnips
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
let g:UltiSnipsExpandTrigger="<tab>"
let g:UltiSnipsJumpForwardTrigger="<c-j>"
let g:UltiSnipsJumpBackwardTrigger="<c-k>"
" map <leader>uu :UltiSnips#ExpandSnippet()<cr>
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => syntastic
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
set statusline+=%#warningmsg#
set statusline+=%{SyntasticStatuslineFlag()}
set statusline+=%*
let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 1
" javascript checkers
let g:syntastic_javascript_checkers = ['']
" json checkers
let g:syntastic_json_checkers = ['jsonlint']
" css checkers
let g:syntastic_css_checkers = ['csslint']