.vimrc 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. " wreed vimrc
  2. " vim: set foldmethod=marker:
  3. " allow python in vimrc
  4. python import vim
  5. "{{{ ***** PLUGINS ***** "
  6. " #####Pathogen#####
  7. call pathogen#infect()
  8. call pathogen#helptags()
  9. " #####PyMode#####
  10. "let pymode_lint_ignore="E501,E401,E225,W191,W391,W404"
  11. " use rope code assist instead of a complete function
  12. " au FileType python inoremap <expr> <S-Space> '<C-r>=RopeCodeAssistInsertMode()<CR><C-r>=pumvisible() ? "\<lt>C-p>\<lt>Down>" : ""<CR>'
  13. " Tlist
  14. " Toggle tag list
  15. " nnoremap <C-T> :TlistToggle<CR>
  16. " #####Tagbar#####
  17. let g:tagbar_autofocus = 1
  18. let g:tagbar_left = 1
  19. let g:tagbar_zoomwidth = 0
  20. " open Tagbar automatically when viewing a supported file/files
  21. "autocmd VimEnter * nested :call tagbar#autoopen(1)
  22. " open Tagbar automatically when entering a buffer of supported file/files
  23. "autocmd BufEnter * nested :call tagbar#autoopen(0)
  24. " Toggle Tagbar
  25. nnoremap <leader>tt :TagbarToggle<CR>
  26. " #####Airline#####
  27. let g:airline#extensions#tabline#enabled = 1
  28. let g:airline#extensions#tabline#show_tab_nr = 1
  29. let g:airline#extensions#tabline#tab_nr_type = 1
  30. let g:airline#extensions#tabline#show_close_button =1
  31. let g:airline#extensions#tagbar#enabled = 1
  32. let g:airline#extensions#whitespace#enabled = 0
  33. let g:airline#extensions#tmuxline#enabled = 1
  34. "let g:airline_powerline_fonts=1
  35. let g:airline_left_sep = '»'
  36. let g:airline_left_sep = '▶'
  37. " #####NERDTree#####
  38. let g:NERDTreeDirArrows = 0
  39. let g:NERDTreeWinPos = "right"
  40. nnoremap <leader>nt :NERDTreeToggle<CR>
  41. " #####NerdCommenter#####
  42. imap <C-c> <plug>NERDCommenterInsert
  43. " #####UltiSnips#####
  44. let g:UltiSnipsEditSplit = "vertical"
  45. let g:UltiSnipsJumpForwardTrigger="<TAB>"
  46. let g:UltiSnipsJumpBackwardTrigger="<S-TAB>"
  47. let g:UltiSnipsSnippetsDir="~/.vim/bundle/vim-snippets/UltiSnips"
  48. " #####CCTree#####
  49. nnoremap <leader>ct :CCTreeWindowToggle<CR>
  50. " #####ConqueTerm#####
  51. let g:ConqueTerm_CloseOnEnd = 1
  52. "Conque spits out an error about CursorHoldI making it run slow. repress
  53. "these warnings
  54. let g:ConqueTerm_StartMessages = 0
  55. " #####Pyclewn#####
  56. " Only map keys if we're in Pyclewn
  57. if has("netbeans_enabled")
  58. "nmap <silent> <C-p> :exe ":Cprint " . expand("<cword>")<CR>
  59. nmap <silent> <C-p> "pyiw :Cprint <C-R>p<CR>
  60. nmap <silent> <C-x> :exe ":Cdbgvar " . expand("<cword>")<CR>
  61. vmap <silent> <C-p> "py :Cprint <C-R>p<CR>
  62. endif
  63. " #####YouCompleteMe#####
  64. " Open preview window when completing
  65. let g:ycm_add_preview_to_completeopt = 1
  66. " Auto Close preview window
  67. let g:ycm_autoclose_preview_window_after_insertion = 0
  68. " Disable Tab for cycling through commands so that UtilSnips will still work
  69. let g:ycm_key_list_select_completion=['<Down>']
  70. let g:ycm_key_list_previous_completion=['<Up>']
  71. let g:ycm_collect_identifiers_from_tags_files=1
  72. let g:ycm_key_invoke_completion = '<C-N>'
  73. " }}}
  74. "{{{ ***** VIM FEATURES ***** "
  75. " allow project-specific .vimrc files
  76. set exrc
  77. set secure
  78. " allow the use of a modeline
  79. set modeline
  80. " automatically read a file if it changes outside of vim
  81. set autoread
  82. " turn ruler on
  83. set ruler
  84. " set incremental search
  85. set hlsearch
  86. set incsearch
  87. " set status line always on
  88. set laststatus=2
  89. " set mouse always on. I like the mouse sometimes
  90. set mouse=a
  91. " 256 stuff
  92. " disable BackgroundColorErase (BCE) inside of 256-color tmux sessions
  93. if &term =~ '256color'
  94. set t_ut=
  95. endif
  96. " New Splits default to right, or below
  97. set splitbelow
  98. set splitright
  99. "turn omnicomplete on
  100. filetype plugin on
  101. set omnifunc=syntaxcomplete#Complete
  102. " }}}
  103. "{{{ ***** VISUALS ***** "
  104. " set number
  105. set number
  106. set relativenumber
  107. set foldmethod=syntax
  108. set foldcolumn=3
  109. set expandtab
  110. set shiftwidth=4
  111. set softtabstop=4
  112. set autoindent
  113. set smartindent
  114. set cindent
  115. filetype plugin indent on
  116. "set background=light
  117. "let g:solarized_termcolors=256
  118. "colorscheme solarized
  119. "colorscheme carvedwoodcool
  120. "colorscheme wombat256
  121. "colorscheme zenburn
  122. colorscheme kolor
  123. "colorscheme jellybeans
  124. "colorscheme hybrid
  125. "colorscheme bubblegum
  126. "colorscheme devbox-dark-256
  127. syntax on
  128. set showcmd
  129. "}}}
  130. "{{{ ***** KEY MAPPINGS ***** "
  131. " make backspace work
  132. set backspace=eol,start,indent
  133. set whichwrap+=<,>,h,l
  134. set whichwrap+=<,>,h,l
  135. set pastetoggle=<F2>
  136. nmap <F12> :mks!<CR>
  137. nnoremap <F3> :MakeRelease<CR><CR>
  138. nnoremap <F4> :MakeDebug<CR><CR>
  139. nnoremap <F5> :so ~/.vimrc<CR>
  140. " look up things in opengrok
  141. noremap <leader>K :call OpenGrok()<CR>
  142. " treat wrapped lines as multiple lines when navigating
  143. map j gj
  144. map k gk
  145. " Open a new line and exit insert mode, staying on the same line
  146. nnoremap <leader>o o<ESC>k
  147. nnoremap <leader>O O<ESC>j
  148. " Open tag in new tab
  149. nnoremap <M-]> <C-W><C-]><C-W>T
  150. " Toggle TODOs as done or not
  151. nnoremap <silent> <leader>x :s/\[ \]TODO/[X]TODO/<CR>:nohl<CR>
  152. nnoremap <silent> <leader><space> :s/\[X\]TODO/[ ]TODO/<CR>:nohl<CR>
  153. " WINDOW ORGANISATION
  154. " Smart way to move between windows
  155. map <C-j> <C-W>j
  156. map <C-k> <C-W>k
  157. map <C-h> <C-W>h
  158. map <C-l> <C-W>l
  159. map <C-Up> <C-W>k
  160. map <C-Down> <C-W>j
  161. map <C-Left> <C-W>h
  162. map <C-Right> <C-W>l
  163. " easy resize windows
  164. nnoremap <S-Up> <C-W>+
  165. nnoremap <S-Down> <C-W>-
  166. nnoremap <S-Left> 3<C-W><
  167. nnoremap <S-Right> 3<C-W>>
  168. " easy move windows
  169. nnoremap <C-S-Up> <C-W><S-K>
  170. nnoremap <C-S-Down> <C-W><S-J>
  171. nnoremap <C-S-Left> <C-W><S-H>
  172. nnoremap <C-S-Right> <C-W><S-L>
  173. " }}}
  174. "{{{ ***** PROJECTS ***** "
  175. " set default project options
  176. set makeprg=rfds
  177. command! -nargs=* MakeRelease Make build release
  178. command! -nargs=* MakeDebug Make build debug
  179. " }}}
  180. "{{{ ***** FUNCTIONS ***** "
  181. " open OpenGrok in midori
  182. function! OpenGrok()
  183. :!midori http://opengrok.factset.com/source/search?defs=<cword>&project=%2Fonline%2Fmakefds<CR>
  184. endfunction
  185. "function! OpenDepotFile(version, fname)
  186. python << END
  187. def OpenDepotFile(version, fname):
  188. vim.command("edit /home/dev/fonix/online/" + version + "/src/" + fname)
  189. END
  190. "endfunction
  191. " }}}
  192. "{{{ ***** COMMANDS ***** "
  193. " make todo list
  194. command! -nargs=* -complete=file Todos vimgrep /TODO(wreed):/gj *|cw
  195. "Wrapper for make sequence
  196. command! -nargs=* Make execute '!clear' | make! <args> | cw
  197. " Perforce commands
  198. command! -nargs=0 PerfEdit execute "!p4 edit %"
  199. " Open Depot File
  200. command! -nargs=+ -complete=custom,DepotComplete OpenQaFile python OpenDepotFile("qa", <f-args>)
  201. function! DepotComplete(ArgLead, CmdLine, CursorPos)
  202. return system("ls /home/dev/fonix/online/qa/src/")
  203. endfunction
  204. " }}}
  205. "// [ ]TODO(wreed): shortcut to edit VMS files (with tab completion??)
  206. "// [ ]TODO(wreed): shortcut to look at directory