Skip to content

Instantly share code, notes, and snippets.

@srkiNZ84
Last active June 26, 2018 08:19
Show Gist options
  • Save srkiNZ84/257ca19c0fd04132a88a809d6bd9db7d to your computer and use it in GitHub Desktop.
Save srkiNZ84/257ca19c0fd04132a88a809d6bd9db7d to your computer and use it in GitHub Desktop.
My vimrc file
" 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