Last active
June 26, 2018 08:19
-
-
Save srkiNZ84/257ca19c0fd04132a88a809d6bd9db7d to your computer and use it in GitHub Desktop.
My vimrc file
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
" vim: set ts=4 sw=4 expandtab tw=120 : | |
set fileformats=unix | |
" Use Pathogen, if available, to manage bundles | |
if filereadable(expand("~/.vim/autoload/pathogen.vim")) | |
call pathogen#infect() | |
endif | |
" Basic options -------------------------------------------------------------- | |
if has("gui_running") | |
set background=light " Light background in gui | |
set mouse=a | |
else | |
set background=dark " Dark background in terminal | |
set mouse=vi | |
endif | |
set showcmd " Show (partial) command in status line. | |
set showmatch " Show matching brackets. | |
set ignorecase " Do case insensitive matching | |
set smartcase " Do smart case matching | |
set incsearch " Incremental search | |
set autowrite " Automatically save before :next, :make, etc. | |
set hidden " Hide buffers when they are abandoned | |
set laststatus=2 " Last file open has status bar always | |
set nocompatible " Screw compatibility | |
set backspace=eol,indent,start " Better backspace in insert mode | |
set guioptions+=menu | |
" Wildmenu | |
set wildmenu | |
set wildignore+=*.o,*~ | |
set wildmode=longest:full | |
" Modelines | |
set modeline | |
set modelines=3 | |
" Persistant undo | |
if version >= 730 | |
set undofile | |
set undodir=~/.undo | |
set undolevels=1000 | |
set undoreload=10000 | |
endif | |
" Solarized | |
let g:solarized_termtrans = 1 " Even though it's not usually :-p | |
let g:solarized_termcolors = 16 " Yes, 16 (indexed) not 256 (non-indexed) | |
let g:solarized_visibility = "low" " For non-printing hi: SpecialKey, NonText | |
let g:solarized_contrast = "normal" | |
" Syntax | |
syntax enable | |
" Colorscheme (yes, in this order) | |
colorscheme solarized | |
" Filetype specific indentation | |
if has("autocmd") | |
filetype on | |
filetype indent on | |
filetype plugin on | |
" MySQL is the default SQL dialect | |
let g:sql_type_default = 'mysql' | |
endif | |
" Have Vim jump to the last position when reopening a file | |
if has("autocmd") | |
au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | |
\| exe "normal! g'\"" | endif | |
endif | |
" Show non-printing characters | |
set listchars=tab:\|»,trail:·,eol: | |
set list | |
" Highlighting --------------------------------------------------------------- | |
" Normal | |
exe "hi! StatusLine" .solarized_vars['fmt_bold'] .solarized_vars['bg_base2'] .solarized_vars['fg_base02'] | |
exe "hi! StatusLineNC" .solarized_vars['fmt_none'] .solarized_vars['bg_base03'] .solarized_vars['fg_base3'] | |
" Need to save! | |
exe "hi! StatusLineModified" .solarized_vars['fmt_bold'] .solarized_vars['bg_base2'] .solarized_vars['fg_red'] | |
exe "hi! StatusLineModifiedNC" .solarized_vars['fmt_none'] .solarized_vars['bg_base2'] .solarized_vars['fg_red'] | |
" /etc/* as non-root | |
exe "hi! StatusLineReadonly" .solarized_vars['fmt_bold'] .solarized_vars['bg_magenta'] .solarized_vars['fg_base02'] | |
exe "hi! StatusLineReadonlyNC" .solarized_vars['fmt_none'] .solarized_vars['bg_base03'] .solarized_vars['fg_magenta'] | |
" NERDTree, Help | |
exe "hi! StatusLineSpecial" .solarized_vars['fmt_bold'] .solarized_vars['bg_base01'] .solarized_vars['fg_base02'] | |
exe "hi! StatusLineSpecialNC" .solarized_vars['fmt_none'] .solarized_vars['bg_base02'] .solarized_vars['fg_orange'] | |
" Help | |
" exe "hi! StatusLineUnmodifiable" .solarized_vars['fmt_bold'] .solarized_vars['bg_base02'] .solarized_vars['fg_orange'] | |
" exe "hi! StatusLineUnmodifiableNC" .solarized_vars['fmt_none'] .solarized_vars['bg_base02'] .solarized_vars['fg_yellow'] | |
" exe "hi! StatusLinePreview" .solarized_vars['fmt_bold'] .solarized_vars['bg_base01'] .solarized_vars['fg_base0'] | |
" exe "hi! StatusLinePreviewNC" .solarized_vars['fmt_none'] .solarized_vars['bg_base01'] .solarized_vars['fg_base0'] | |
" Statusline --------------------------------------------------------------- | |
set statusline= " Clear | |
"set statusline+=%#StatusLineImportant# | |
set statusline+=%3.3n\ " buffer number | |
set statusline+=%f\ " file name | |
set statusline+=%h%m%r%w " flags | |
set statusline+=[%{strlen(&ft)?&ft:'none'}, " filetype | |
set statusline+=%{strlen(&fenc)?&fenc:&enc}, " encoding | |
set statusline+=%{&fileformat}] " file format | |
set statusline+=%{SyntasticStatuslineFlag()} | |
set statusline+=%= " right align | |
set statusline+=%{synIDattr(synID(line('.'),col('.'),1),'name')} " highlight | |
set statusline+=%b,0x%-8B\ " current char | |
set statusline+=%-14.(%l,%c%V%)\ %<\ " offset | |
set statusline+=%P | |
" Autocomplete --------------------------------------------------------------- | |
" All on | |
setlocal omnifunc=syntaxcomplete#Complete | |
" Improvements | |
" " Only insert longest match, show menu for only one match | |
set completeopt+=longest,menuone | |
" " Enter key selects highlighted menu item | |
inoremap <expr> <CR> pumvisible() ? "\<C-y>" : "\<C-g>u\<CR>" | |
" " Keep menu item always highlighted | |
inoremap <expr> <C-n> pumvisible() ? '<C-n>' : | |
\ '<C-n><C-r>=pumvisible() ? "\<lt>Down>" : ""<CR>' | |
" ctags | |
set tags=./tags,tags,~/.tags,../tags,./TAGS | |
"autocmd BufEnter ~/workspace/* :setlocal tags+=~/workspace/tags | |
" Syntastic | |
let g:syntastic_mode_map = { 'mode': 'passive', | |
\ 'active_filetypes': ['ruby', 'puppet'], | |
\ 'passive_filetypes': [] } | |
" Tabularize | |
if exists(":Tabularize") | |
nmap <Leader>a= :Tabularize /=<CR> | |
vmap <Leader>a= :Tabularize /=<CR> | |
nmap <Leader>a: :Tabularize /:\zs<CR> | |
vmap <Leader>a: :Tabularize /:\zs<CR> | |
endif | |
" Key mappings --------------------------------------------------------------- | |
" Privileged write to file | |
cmap w!! %!sudo tee > /dev/null % | |
" Replace semicolon with colon in no mode | |
nmap ; : | |
" Easy indentation in visual mode | |
" " This keeps the visual selection active after indenting. | |
" " Usually the visual selection is lost after you indent it. | |
vmap > >gv | |
vmap < <gv | |
" Commenting | |
" " lhs comments | |
map ,# :s/^/#/<CR> | |
map ,/ :s/^/\/\//<CR> | |
map ,? :s/^\/\///<CR> | |
map ,> :s/^/> /<CR> | |
map ," :s/^/\"/<CR> | |
map ,% :s/^/%/<CR> | |
map ,! :s/^/!/<CR> | |
map ,; :s/^/;/<CR> | |
map ,- :s/^/--/<CR> | |
map ,c :s/^\/\/\\|^--\\|^> \\|^[#"%!;]//<CR> | |
" " wrapping comments | |
map ,* :s/^\(.*\)$/\/\* \1 \*\//<CR> | |
map ,( :s/^\(.*\)$/\(\* \1 \*\)/<CR> | |
map ,< :s/^\(.*\)$/<!-- \1 -->/<CR> | |
map ,d :s/^\([/(]\*\\|<!--\) \(.*\) \(\*[/)]\\|-->\)$/\2/<CR> | |
" Fix whitespace plugin | |
nnoremap <Leader>fw :FixWhitespace<CR> | |
" Long line length display | |
nnoremap <silent> <Leader>l | |
\ :if exists('w:long_line_match') <Bar> | |
\ echo "Line length display OFF" <Bar> | |
\ silent! call matchdelete(w:long_line_match) <Bar> | |
\ unlet w:long_line_match <Bar> | |
\ elseif &textwidth > 0 <Bar> | |
\ echo "Line length display ON (" . &tw . ")" <Bar> | |
\ let w:long_line_match = matchadd('ErrorMsg', '\%>' . &tw . 'v.\+', -1) <Bar> | |
\ else <Bar> | |
\ echo "Line length display ON (80)" <Bar> | |
\ let w:long_line_match = matchadd('ErrorMsg', '\%>80v.\+', -1) <Bar> | |
\ endif<CR> | |
" Append modeline after last line in buffer. | |
" Use substitute() instead of printf() to handle '%%s' modeline in LaTeX | |
" files. | |
function! AppendModeline() | |
let l:modeline = printf(" vim: set ts=%d sw=%d tw=%d :", | |
\ &tabstop, &shiftwidth, &textwidth) | |
let l:modeline = substitute(&commentstring, "%s", l:modeline, "") | |
call append(line("1"), l:modeline) | |
endfunction | |
nnoremap <silent> <Leader>ml :call AppendModeline()<CR> | |
" NERDTree mappings | |
nnoremap <Leader>pp :NERDTreeToggle puppet<CR> | |
nnoremap <Leader>pf :NERDTreeFind<CR> | |
nnoremap <Leader>pt :NERDTreeToggle<CR> | |
let NERDTreeMapHelp='<F1>' | |
" Project settings | |
let g:proj_window_width=45 | |
" Open in tab | |
nnoremap <silent> <Leader>te :tabedit %<CR> | |
nnoremap <silent> <Leader>tc :tabclose<CR> | |
" Resize window | |
nnoremap <silent> <Leader>+ :exe "resize " . (winwidth(0) * 3/2)<CR> | |
nnoremap <silent> <Leader>- :exe "resize " . (winwidth(0) * 2/3)<CR> | |
nnoremap <silent> <Leader>> :exe "vertical resize " . (winheight(0) * 3/2)<CR> | |
nnoremap <silent> <Leader>< :exe "vertical resize " . (winheight(0) * 2/3)<CR> | |
" Edit .vimrc | |
nnoremap <Leader>ve :vsplit ~/.vimrc<CR> | |
nnoremap <Leader>vs :source ~/.vimrc<CR> | |
" Nice regexes | |
" To use: :s<C-R>=rpp<CR> (for example) | |
let rpp = '/\(,\|(\) */\1 | |
\t/g' | |
" Allow diff against saved file | |
function! s:DiffWithSaved() | |
let filetype=&ft | |
diffthis | |
vnew | r # | normal! 1Gdd | |
diffthis | |
exe "setlocal bt=nofile bh=wipe nobl noswf ro ft=" . filetype | |
endfunction | |
com! DiffSaved call s:DiffWithSaved() | |
nnoremap <Leader>ds :DiffSaved<CR> | |
set ts=2 sw=2 expandtab tw=120 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment