.vimrc 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. " essentials
  2. set ruler
  3. set mouse=a
  4. set nocompatible
  5. set bs=2
  6. set nowrap
  7. " give me all of teh colors!!
  8. set t_Co=256
  9. set bg=dark
  10. colorscheme elflord
  11. syntax on
  12. " misc
  13. set path+=** " make :find tab-completion search subdirectories
  14. set wildmenu " show tab-complete menu for : commands
  15. " search
  16. set ignorecase " case insensitive search
  17. set smartcase " auto switch to case-sensitive if uppercase *is* used
  18. set incsearch " live incremental searching
  19. set showmatch " show matches live while typing
  20. set hlsearch " highlight matches
  21. " tabs
  22. set shiftwidth=4
  23. set tabstop=4
  24. set softtabstop=4
  25. " tab based indention behaviors
  26. vmap <Tab> >
  27. nmap <Tab> >>
  28. vmap <S-Tab> <
  29. nmap <S-Tab> <<
  30. imap <S-Tab> <Esc><<i
  31. " folds
  32. set foldmethod=syntax
  33. set foldlevelstart=99
  34. " simplify working with the system clipboard
  35. vmap <C-c> "+y
  36. nmap <C-c> V"+y
  37. vmap <C-x> "+x
  38. nmap <C-x> V"+x
  39. imap <C-v> <Esc>"+Pi
  40. " no more ex mode!
  41. nmap Q <nop>
  42. " force syntax on a few file types
  43. autocmd BufNewFile,BufReadPost *.json set filetype=json syntax=javascript
  44. autocmd BufNewFile,BufReadPost *.md set filetype=markdown
  45. autocmd BufNewFile,BufReadPost *.go set filetype=go
  46. " prefer ripgrep if available
  47. if executable('rg')
  48. set grepprg=rg\ --vimgrep\ $*
  49. set grepformat^=%f:%l:%c:%m
  50. endif
  51. " VIM-PLUG PLUGINS (WITH FIRST-RUN AUTOINSTALL)
  52. if empty(glob('~/.vim/autoload/plug.vim'))
  53. silent !mkdir -p "$HOME/.vim/autoload"; U="https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim"; F="$HOME/.vim/autoload/plug.vim"; curl -fLo "$F" "$U" 2>/dev/null || wget -qLO "$F" "$U"
  54. autocmd VimEnter * PlugInstall
  55. endif
  56. call plug#begin()
  57. Plug 'tpope/vim-commentary' " comment stuff out
  58. Plug 'vim-airline/vim-airline' " more helpful tab line and status lines with colors
  59. let g:airline#extensions#tabline#enabled = !has('gui_running')
  60. let g:airline#extensions#tabline#show_buffers = 0
  61. set laststatus=2
  62. set ttimeoutlen=50
  63. Plug 'preservim/nerdtree', { 'on': 'NERDTreeToggle' } " tree file browser
  64. map <C-\> :NERDTreeToggle<CR>
  65. "TODO: detect SHIFT?: map <Shift><C-\> :NERDTreeFind<CR>
  66. Plug 'mg979/vim-visual-multi' " multiple cursor support
  67. Plug 'editorconfig/editorconfig-vim'
  68. Plug 'vim-syntastic/syntastic' " multi-language syntax checker
  69. let g:syntastic_check_on_open=1
  70. let g:syntastic_aggregate_errors=1
  71. let g:syntastic_javascript_checkers = ['eslint']
  72. Plug 'ntpeters/vim-better-whitespace' " whitespace!!
  73. let g:strip_whitespace_on_save = 1
  74. Plug 'nathanaelkane/vim-indent-guides' " pretty indent guides with softtabs
  75. let g:indent_guides_guide_size = 1
  76. let g:indent_guides_auto_colors = 0
  77. autocmd VimEnter * :highlight IndentGuidesOdd ctermbg=233
  78. autocmd VimEnter * :highlight IndentGuidesEven ctermbg=234
  79. autocmd VimEnter * :IndentGuidesEnable
  80. Plug 'lilydjwg/colorizer' " colorize CSS inline
  81. Plug 'ctrlpvim/ctrlp.vim' " fuzzy file matcher / opener
  82. let ctrlp_user_cmd_fallback = 'find %s -type f'
  83. if executable('rg') | let ctrlp_user_cmd_fallback = 'rg --files %s' | endif
  84. let g:ctrlp_user_command = ['.git', 'cd %s && git ls-files . -co --exclude-standard', ctrlp_user_cmd_fallback]
  85. Plug 'fisadev/vim-ctrlp-cmdpalette' " fuzzy command matcher / runner
  86. "TODO: detect SHIFT?: map <Shift><C-p> :CtrlPCmdPalette<CR>
  87. Plug 'tpope/vim-fugitive' " git commands and statusline
  88. Plug 'mhinz/vim-signify' " label VCS changes in gutter
  89. Plug 'oplatek/Conque-Shell' " a shell in a buffer
  90. let g:ConqueTerm_ReadUnfocused = 1
  91. let g:ConqueTerm_InsertOnEnter = 1
  92. let g:ConqueTerm_CloseOnEnd = 1
  93. Plug 'pangloss/vim-javascript' " better JavaScript support
  94. Plug 'moll/vim-node' " nodejs extras
  95. Plug 'leafgarland/typescript-vim' " TypeScript support
  96. autocmd QuickFixCmdPost [^l]* nested cwindow
  97. autocmd QuickFixCmdPost l* nested lwindow
  98. Plug 'rust-lang/rust.vim'
  99. call plug#end()