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']

posted @ 2023-02-14 11:36  箫笛  阅读(31)  评论(0)    收藏  举报