.vimrc 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  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. " map Alt+Right/Left arrow to movements
  35. nmap <Esc>f <Esc>e
  36. nmap <Esc>b <Esc>b
  37. imap <Esc>f <Esc>lei
  38. imap <Esc>b <Esc>bi
  39. " simplify working with the system clipboard
  40. vmap <C-c> "+y
  41. nmap <C-c> V"+y
  42. vmap <C-x> "+x
  43. nmap <C-x> V"+x
  44. imap <C-v> <Esc>"+Pi
  45. " no more ex mode!
  46. nmap Q <nop>
  47. " force syntax on a few file types
  48. autocmd BufNewFile,BufReadPost *.json set filetype=json syntax=javascript
  49. autocmd BufNewFile,BufReadPost *.md set filetype=markdown
  50. autocmd BufNewFile,BufReadPost *.go set filetype=go
  51. " prefer ripgrep if available
  52. if executable('rg')
  53. set grepprg=rg\ --vimgrep\ $*
  54. set grepformat^=%f:%l:%c:%m
  55. endif
  56. " VIM-PLUG PLUGINS (WITH FIRST-RUN AUTOINSTALL)
  57. if empty(glob('~/.vim/autoload/plug.vim'))
  58. 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"
  59. autocmd VimEnter * PlugInstall
  60. endif
  61. call plug#begin()
  62. Plug 'tpope/vim-commentary' " comment stuff out
  63. Plug 'vim-airline/vim-airline' " more helpful tab line and status lines with colors
  64. let g:airline#extensions#tabline#enabled = !has('gui_running')
  65. let g:airline#extensions#tabline#show_buffers = 0
  66. set laststatus=2
  67. set ttimeoutlen=50
  68. Plug 'mg979/vim-visual-multi' " multiple cursor support
  69. Plug 'editorconfig/editorconfig-vim'
  70. Plug 'vim-syntastic/syntastic' " multi-language syntax checker
  71. let g:syntastic_check_on_open=1
  72. let g:syntastic_aggregate_errors=1
  73. let g:syntastic_javascript_checkers = ['eslint']
  74. Plug 'ntpeters/vim-better-whitespace' " whitespace!!
  75. let g:strip_whitespace_on_save = 1
  76. Plug 'nathanaelkane/vim-indent-guides' " pretty indent guides with softtabs
  77. let g:indent_guides_guide_size = 1
  78. let g:indent_guides_auto_colors = 0
  79. autocmd VimEnter * :highlight IndentGuidesOdd ctermbg=233
  80. autocmd VimEnter * :highlight IndentGuidesEven ctermbg=234
  81. autocmd VimEnter * :IndentGuidesEnable
  82. Plug 'lilydjwg/colorizer' " colorize CSS inline
  83. Plug 'ctrlpvim/ctrlp.vim' " fuzzy file matcher / opener
  84. let ctrlp_user_cmd_fallback = 'find %s -type f'
  85. if executable('rg') | let ctrlp_user_cmd_fallback = 'rg --files %s' | endif
  86. let g:ctrlp_user_command = ['.git', 'cd %s && git ls-files . -co --exclude-standard', ctrlp_user_cmd_fallback]
  87. Plug 'tpope/vim-fugitive' " git commands and statusline
  88. Plug 'mhinz/vim-signify' " label VCS changes in gutter
  89. Plug 'pangloss/vim-javascript' " better JavaScript support
  90. Plug 'moll/vim-node' " nodejs extras
  91. Plug 'leafgarland/typescript-vim' " TypeScript support
  92. autocmd QuickFixCmdPost [^l]* nested cwindow
  93. autocmd QuickFixCmdPost l* nested lwindow
  94. Plug 'rust-lang/rust.vim'
  95. call plug#end()