Guest User

Untitled

a guest
May 21st, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.71 KB | None | 0 0
  1. " vim: set ts=4 sw=4 expandtab tw=120 :
  2.  
  3. set fileformats=unix
  4.  
  5. " Use Pathogen, if available, to manage bundles
  6. if filereadable(expand("~/.vim/autoload/pathogen.vim"))
  7. call pathogen#infect()
  8. endif
  9.  
  10. " Basic options --------------------------------------------------------------
  11.  
  12. if has("gui_running")
  13. set background=light " Light background in gui
  14. set mouse=a
  15. else
  16. set background=dark " Dark background in terminal
  17. set mouse=vi
  18. endif
  19.  
  20. set showcmd " Show (partial) command in status line.
  21. set showmatch " Show matching brackets.
  22. set ignorecase " Do case insensitive matching
  23. set smartcase " Do smart case matching
  24. set incsearch " Incremental search
  25. set autowrite " Automatically save before :next, :make, etc.
  26. set hidden " Hide buffers when they are abandoned
  27. set laststatus=2 " Last file open has status bar always
  28. set nocompatible " Screw compatibility
  29. set backspace=eol,indent,start " Better backspace in insert mode
  30. set guioptions+=menu
  31.  
  32. " Wildmenu
  33. set wildmenu
  34. set wildignore+=*.o,*~
  35. set wildmode=longest:full
  36.  
  37. " Modelines
  38. set modeline
  39. set modelines=3
  40.  
  41. " Persistant undo
  42. if version >= 730
  43. set undofile
  44. set undodir=~/.undo
  45. set undolevels=1000
  46. set undoreload=10000
  47. endif
  48.  
  49. " Solarized
  50. let g:solarized_termtrans = 1 " Even though it's not usually :-p
  51. let g:solarized_termcolors = 16 " Yes, 16 (indexed) not 256 (non-indexed)
  52. let g:solarized_visibility = "low" " For non-printing hi: SpecialKey, NonText
  53. let g:solarized_contrast = "normal"
  54.  
  55. " Syntax
  56. syntax enable
  57.  
  58. " Colorscheme (yes, in this order)
  59. colorscheme solarized
  60.  
  61. " Filetype specific indentation
  62. if has("autocmd")
  63. filetype on
  64. filetype indent on
  65. filetype plugin on
  66.  
  67. " MySQL is the default SQL dialect
  68. let g:sql_type_default = 'mysql'
  69. endif
  70.  
  71. " Have Vim jump to the last position when reopening a file
  72. if has("autocmd")
  73. au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$")
  74. \| exe "normal! g'\"" | endif
  75. endif
  76.  
  77. " Show non-printing characters
  78. set listchars=tab:\|»,trail:·,eol:␤
  79. set list
  80.  
  81.  
  82. " Highlighting ---------------------------------------------------------------
  83.  
  84. " Normal
  85. exe "hi! StatusLine" .solarized_vars['fmt_bold'] .solarized_vars['bg_base2'] .solarized_vars['fg_base02']
  86. exe "hi! StatusLineNC" .solarized_vars['fmt_none'] .solarized_vars['bg_base03'] .solarized_vars['fg_base3']
  87.  
  88. " Need to save!
  89. exe "hi! StatusLineModified" .solarized_vars['fmt_bold'] .solarized_vars['bg_base2'] .solarized_vars['fg_red']
  90. exe "hi! StatusLineModifiedNC" .solarized_vars['fmt_none'] .solarized_vars['bg_base2'] .solarized_vars['fg_red']
  91.  
  92. " /etc/* as non-root
  93. exe "hi! StatusLineReadonly" .solarized_vars['fmt_bold'] .solarized_vars['bg_magenta'] .solarized_vars['fg_base02']
  94. exe "hi! StatusLineReadonlyNC" .solarized_vars['fmt_none'] .solarized_vars['bg_base03'] .solarized_vars['fg_magenta']
  95.  
  96. " NERDTree, Help
  97. exe "hi! StatusLineSpecial" .solarized_vars['fmt_bold'] .solarized_vars['bg_base01'] .solarized_vars['fg_base02']
  98. exe "hi! StatusLineSpecialNC" .solarized_vars['fmt_none'] .solarized_vars['bg_base02'] .solarized_vars['fg_orange']
  99.  
  100. " Help
  101. " exe "hi! StatusLineUnmodifiable" .solarized_vars['fmt_bold'] .solarized_vars['bg_base02'] .solarized_vars['fg_orange']
  102. " exe "hi! StatusLineUnmodifiableNC" .solarized_vars['fmt_none'] .solarized_vars['bg_base02'] .solarized_vars['fg_yellow']
  103.  
  104. " exe "hi! StatusLinePreview" .solarized_vars['fmt_bold'] .solarized_vars['bg_base01'] .solarized_vars['fg_base0']
  105. " exe "hi! StatusLinePreviewNC" .solarized_vars['fmt_none'] .solarized_vars['bg_base01'] .solarized_vars['fg_base0']
  106.  
  107. " Statusline ---------------------------------------------------------------
  108.  
  109. set statusline= " Clear
  110. "set statusline+=%#StatusLineImportant#
  111. set statusline+=%3.3n\ " buffer number
  112. set statusline+=%f\ " file name
  113. set statusline+=%h%m%r%w " flags
  114. set statusline+=[%{strlen(&ft)?&ft:'none'}, " filetype
  115. set statusline+=%{strlen(&fenc)?&fenc:&enc}, " encoding
  116. set statusline+=%{&fileformat}] " file format
  117. set statusline+=%{SyntasticStatuslineFlag()}
  118. set statusline+=%= " right align
  119. set statusline+=%{synIDattr(synID(line('.'),col('.'),1),'name')} " highlight
  120. set statusline+=%b,0x%-8B\ " current char
  121. set statusline+=%-14.(%l,%c%V%)\ %<\ " offset
  122. set statusline+=%P
  123.  
  124. " Autocomplete ---------------------------------------------------------------
  125.  
  126. " All on
  127. setlocal omnifunc=syntaxcomplete#Complete
  128.  
  129. " Improvements
  130. " " Only insert longest match, show menu for only one match
  131. set completeopt+=longest,menuone
  132. " " Enter key selects highlighted menu item
  133. inoremap <expr> <CR> pumvisible() ? "\<C-y>" : "\<C-g>u\<CR>"
  134. " " Keep menu item always highlighted
  135. inoremap <expr> <C-n> pumvisible() ? '<C-n>' :
  136. \ '<C-n><C-r>=pumvisible() ? "\<lt>Down>" : ""<CR>'
  137.  
  138. " ctags
  139. set tags=./tags,tags,~/.tags,../tags,./TAGS
  140.  
  141. "autocmd BufEnter ~/workspace/* :setlocal tags+=~/workspace/tags
  142.  
  143. " Syntastic
  144. let g:syntastic_mode_map = { 'mode': 'passive',
  145. \ 'active_filetypes': ['ruby', 'puppet'],
  146. \ 'passive_filetypes': [] }
  147.  
  148. " Tabularize
  149. if exists(":Tabularize")
  150. nmap <Leader>a= :Tabularize /=<CR>
  151. vmap <Leader>a= :Tabularize /=<CR>
  152. nmap <Leader>a: :Tabularize /:\zs<CR>
  153. vmap <Leader>a: :Tabularize /:\zs<CR>
  154. endif
  155.  
  156. " Key mappings ---------------------------------------------------------------
  157.  
  158. " Privileged write to file
  159. cmap w!! %!sudo tee > /dev/null %
  160.  
  161. " Replace semicolon with colon in no mode
  162. nmap ; :
  163.  
  164. " Easy indentation in visual mode
  165. " " This keeps the visual selection active after indenting.
  166. " " Usually the visual selection is lost after you indent it.
  167. vmap > >gv
  168. vmap < <gv
  169.  
  170. " Commenting
  171. " " lhs comments
  172. map ,# :s/^/#/<CR>
  173. map ,/ :s/^/\/\//<CR>
  174. map ,? :s/^\/\///<CR>
  175. map ,> :s/^/> /<CR>
  176. map ," :s/^/\"/<CR>
  177. map ,% :s/^/%/<CR>
  178. map ,! :s/^/!/<CR>
  179. map ,; :s/^/;/<CR>
  180. map ,- :s/^/--/<CR>
  181. map ,c :s/^\/\/\\|^--\\|^> \\|^[#"%!;]//<CR>
  182.  
  183. " " wrapping comments
  184. map ,* :s/^\(.*\)$/\/\* \1 \*\//<CR>
  185. map ,( :s/^\(.*\)$/\(\* \1 \*\)/<CR>
  186. map ,< :s/^\(.*\)$/<!-- \1 -->/<CR>
  187. map ,d :s/^\([/(]\*\\|<!--\) \(.*\) \(\*[/)]\\|-->\)$/\2/<CR>
  188.  
  189. " Fix whitespace plugin
  190. nnoremap <Leader>fw :FixWhitespace<CR>
  191.  
  192. " Long line length display
  193. nnoremap <silent> <Leader>l
  194. \ :if exists('w:long_line_match') <Bar>
  195. \ echo "Line length display OFF" <Bar>
  196. \ silent! call matchdelete(w:long_line_match) <Bar>
  197. \ unlet w:long_line_match <Bar>
  198. \ elseif &textwidth > 0 <Bar>
  199. \ echo "Line length display ON (" . &tw . ")" <Bar>
  200. \ let w:long_line_match = matchadd('ErrorMsg', '\%>' . &tw . 'v.\+', -1) <Bar>
  201. \ else <Bar>
  202. \ echo "Line length display ON (80)" <Bar>
  203. \ let w:long_line_match = matchadd('ErrorMsg', '\%>80v.\+', -1) <Bar>
  204. \ endif<CR>
  205.  
  206. " Append modeline after last line in buffer.
  207. " Use substitute() instead of printf() to handle '%%s' modeline in LaTeX
  208. " files.
  209. function! AppendModeline()
  210. let l:modeline = printf(" vim: set ts=%d sw=%d tw=%d :",
  211. \ &tabstop, &shiftwidth, &textwidth)
  212. let l:modeline = substitute(&commentstring, "%s", l:modeline, "")
  213. call append(line("1"), l:modeline)
  214. endfunction
  215. nnoremap <silent> <Leader>ml :call AppendModeline()<CR>
  216.  
  217. " NERDTree mappings
  218. nnoremap <Leader>pp :NERDTreeToggle puppet<CR>
  219. nnoremap <Leader>pf :NERDTreeFind<CR>
  220. nnoremap <Leader>pt :NERDTreeToggle<CR>
  221. let NERDTreeMapHelp='<F1>'
  222.  
  223. " Project settings
  224. let g:proj_window_width=45
  225.  
  226. " Open in tab
  227. nnoremap <silent> <Leader>te :tabedit %<CR>
  228. nnoremap <silent> <Leader>tc :tabclose<CR>
  229.  
  230. " Resize window
  231. nnoremap <silent> <Leader>+ :exe "resize " . (winwidth(0) * 3/2)<CR>
  232. nnoremap <silent> <Leader>- :exe "resize " . (winwidth(0) * 2/3)<CR>
  233. nnoremap <silent> <Leader>> :exe "vertical resize " . (winheight(0) * 3/2)<CR>
  234. nnoremap <silent> <Leader>< :exe "vertical resize " . (winheight(0) * 2/3)<CR>
  235.  
  236. " Edit .vimrc
  237. nnoremap <Leader>ve :vsplit ~/.vimrc<CR>
  238. nnoremap <Leader>vs :source ~/.vimrc<CR>
  239.  
  240. " Nice regexes
  241. " To use: :s<C-R>=rpp<CR> (for example)
  242. let rpp = '/\(,\|(\) */\1
  243. \t/g'
  244.  
  245. " Allow diff against saved file
  246. function! s:DiffWithSaved()
  247. let filetype=&ft
  248. diffthis
  249. vnew | r # | normal! 1Gdd
  250. diffthis
  251. exe "setlocal bt=nofile bh=wipe nobl noswf ro ft=" . filetype
  252. endfunction
  253. com! DiffSaved call s:DiffWithSaved()
  254. nnoremap <Leader>ds :DiffSaved<CR>
  255.  
  256. set ts=2 sw=2 expandtab tw=120
Add Comment
Please, Sign In to add comment