diff options
Diffstat (limited to 'vimrc')
-rw-r--r-- | vimrc | 378 |
1 files changed, 0 insertions, 378 deletions
@@ -1,378 +0,0 @@ -" vim:foldmethod=marker commentstring="%s -" based on Eidolos's .vimrc, at http://sartak.katron.org/vimrc - -" General options {{{ -" Miscellaneous {{{ -" fuck vi! long live vim! -set nocompatible - -" indentation FTW.. also plugins FTW! heh -filetype indent plugin on - -" automatically flush to disk when using :make, etc. -set autowrite - -" Gentoo disables modelines by default -set modeline -"}}} -" Display {{{ -" color! -syntax on - -" lines, cols in status line -set ruler - -" current mode in status line -set showmode - -" display the number of (characters|lines) in visual mode, also cur command -set showcmd - -" a - terse messages (like [+] instead of [Modified] -" t - truncate file names -" I - no intro message when starting vim fileless -set shortmess=atI - -" no extra status lines -set laststatus=0 - -" display as much of the last line as possible if it's really long -" also display unprintable characters as hex -set display+=lastline,uhex - -" give three lines of context when moving the cursor around -set scrolloff=3 - -" don't redraw the screen during macros etc (NetHack's runmode:teleport) -set lazyredraw - -" highlight all matches, we'll see if this works with a different hilight -set hlsearch - -" highlight matching parens for .2s -set showmatch -set matchtime=2 - -" threshold for reporting number of lines changed -set report=0 - -" highlight advanced perl vars inside strings -let perl_extended_vars=1 - -" POD! -let perl_include_pod=1 - -" I generally don't want to have to space through things.. :) -set nomore - -" tab completion stuff for the command line -set wildmode=longest,list,full - -" word wrapping -set linebreak -"}}} -" Improve power of commands {{{ -" backspace over autoindent, end of line (to join lines), and preexisting test -set backspace=indent,eol,start - -" add the dictionary to tab completion -set dictionary=/usr/share/dict/words -set complete+=k - -" tab completion in ex mode -set wildmenu - -" when doing tab completion, ignore files with any of the following extensions -set wildignore+=.log,.out,.o - -" remember lotsa fun stuff -set viminfo=!,'1000,f1,/1000,:1000,<1000,@1000,h,n~/.viminfo - -" add : as a file-name character (mostly for Perl's mod::ules) -set isfname+=: -"}}} -" Make vim less whiny {{{ -" :bn with a change in the current buffer? no prob! -set hidden - -" no bells whatsoever -set vb t_vb= - -" if you :q with changes it asks you if you want to continue or not -set confirm - -" 50 milliseconds for escape timeout instead of 1000 -set ttimeoutlen=50 -"}}} -" Indentation {{{ -" normal sized tabs! -set tabstop=8 - -" set to what i like (see #2 in :help tabstop) -set shiftwidth=4 - -" if it looks like a tab, we can delete it like a tab -set softtabstop=4 - -" no tabs! spaces only.. -set expandtab - -" < and > will hit indentation levels instead of always -4/+4 -set shiftround - -" new line has indentation equal to previous line -set autoindent - -" braces affect autoindentation -set smartindent - -" figure out indent when ; is pressed -set cinkeys+=; - -" align break with case in a switch -set cinoptions+=b1 -"}}} -" Folding {{{ -" fold only when I ask for it damnit! -set foldmethod=marker -"}}} -"}}} - -" Colors {{{ -colorscheme peachpuff -" word completion menu {{{ -highlight Pmenu ctermfg=grey ctermbg=darkblue -highlight PmenuSel ctermfg=red ctermbg=darkblue -highlight PmenuSbar ctermbg=cyan -highlight PmenuThumb ctermfg=red - -highlight WildMenu ctermfg=grey ctermbg=darkblue -"}}} -" folding {{{ -highlight Folded ctermbg=black ctermfg=darkgreen -"}}} -" hlsearch {{{ -highlight Search NONE ctermfg=red -"}}} -"}}} - -" Autocommands {{{ -" When editing a file, always jump to the last cursor position {{{ -autocmd BufReadPost * -\ if line("'\"") > 0 && line("'\"") <= line("$") | -\ exe "normal g`\"" | -\ endif -"}}} -" Skeletons {{{ -autocmd BufNewFile *.pl silent 0read ~/.vim/skeletons/perl | normal Gdd -autocmd BufNewFile *.cpp silent 0read ~/.vim/skeletons/cpp | normal Gddk -autocmd BufNewFile *.c silent 0read ~/.vim/skeletons/c | normal Gddk -autocmd BufNewFile *.tex silent 0read ~/.vim/skeletons/tex | normal Gddk -autocmd BufNewFile Makefile silent 0read ~/.vim/skeletons/make | normal $ -" }}} -" Filetypes for when detection sucks {{{ -autocmd BufNewFile,BufReadPost *.tex silent set filetype=tex -" }}} -" Auto +x {{{ -au BufWritePost *.sh !chmod +x % -au BufWritePost *.pl !chmod +x % -"}}} -" Perl :make does a syntax check {{{ -autocmd FileType perl setlocal makeprg=$VIMRUNTIME/tools/efm_perl.pl\ -c\ %\ $* -autocmd FileType perl setlocal errorformat=%f:%l:%m -autocmd FileType perl setlocal keywordprg=perldoc\ -f -"}}} -" Latex :make converts to pdf {{{ -autocmd FileType tex setlocal makeprg=~/bin/latexpdf\ --show\ % -" }}} -" Lua needs to have commentstring set {{{ -autocmd FileType lua setlocal commentstring=--%s -" }}} -"}}} - -" Insert-mode remappings/abbreviations {{{ -" Arrow keys, etc {{{ -imap <up> <C-o>gk -imap <down> <C-o>gj -imap <home> <C-o>g<home> -imap <end> <C-o>g<end> -" }}} -" Hit <C-a> in insert mode after a bad paste (thanks absolon) {{{ -inoremap <silent> <C-a> <ESC>u:set paste<CR>.:set nopaste<CR>gi -"}}} -" Normal-mode remappings {{{ -" have Y behave analogously to D rather than to dd -nmap Y y$ - -nnoremap \\ \ -nmap \/ :nohl<CR> -nmap \s :syntax sync fromstart<CR> -autocmd FileType help nnoremap <CR> <C-]> -autocmd FileType help nnoremap <BS> <C-T> - -" damnit cbus, you've won me over -vnoremap < <gv -vnoremap > >gv -" Make the tab key useful {{{ -function TabWrapper() - if strpart(getline('.'), 0, col('.')-1) =~ '^\s*$' - return "\<Tab>" - elseif exists('&omnifunc') && &omnifunc != '' - return "\<C-X>\<C-N>" - else - return "\<C-N>" - endif -endfunction -imap <Tab> <C-R>=TabWrapper()<CR> -"}}} -" Painless spell checking (F11) {{{ -function s:spell() - if !exists("s:spell_check") || s:spell_check == 0 - echo "Spell check on" - let s:spell_check = 1 - setlocal spell spelllang=en_us - else - echo "Spell check off" - let s:spell_check = 0 - setlocal spell spelllang= - endif -endfunction -map <F11> :call <SID>spell()<CR> -imap <F11> <C-o>:<BS>call <SID>spell()<CR> -"}}} -" Arrow keys, etc, again {{{ -map <up> gk -map <down> gj -map <home> g<home> -map <end> g<end> -" }}} -"}}} -" }}} - -" Plugin settings {{{ -" Enhanced Commentify {{{ -let g:EnhCommentifyBindInInsert = 'No' -let g:EnhCommentifyRespectIndent = 'Yes' -" }}} -" Rainbow {{{ -let g:rainbow = 1 -let g:rainbow_paren = 1 -let g:rainbow_brace = 1 -" why is this necessary? shouldn't just putting it in the plugin dir work? -autocmd BufNewFile,BufReadPost * source ~/.vim/plugin/rainbow_paren.vim -" }}} -" Taglist {{{ -let s:session_file = './.tlist_session' -let TlistIncWinWidth = 0 -let Tlist_GainFocus_On_ToggleOpen = 1 -let Tlist_Use_Horiz_Window = 1 -let Tlist_Compact_Format = 1 -let Tlist_Close_On_Select = 1 -let Tlist_Display_Prototype = 1 -nnoremap <silent> <F8> :TlistToggle<CR> -" if the current file isn't below the current directory, :. doesn't modify % -if file_readable(s:session_file) && expand("%:.") !~ '^/' - autocmd VimEnter * TlistDebug | exec 'TlistSessionLoad ' . s:session_file - autocmd VimLeave * call delete(s:session_file) | exec 'TlistSessionSave ' . s:session_file -endif -" }}} -" }}} -" Text objects {{{ -" Text object creation {{{ -let g:text_object_number = 0 -function Textobj(char, callback) - let g:text_object_number += 1 - function Textobj_{g:text_object_number}(inner, operator, count, callback) - let [startline, startcol, endline, endcol] = function(a:callback)(a:inner, a:count) - if startline == endline - let objlength = endcol - startcol + 1 - else - let lines = getline(startline + 1, endline - 1) - let lines = [strpart(getline(startline), startcol - 1)] + - \ lines + - \ [strpart(getline(endline), 0, endcol)] - let objlength = 0 - for line in lines - let objlength += strlen(line) + 1 - endfor - let objlength -= 1 - endif - call cursor(startline, startcol) - exe 'normal! '.a:operator.objlength.' ' - - if a:operator == 'c' - normal! l - startinsert - elseif a:operator == 'v' - normal! h - endif - endfunction - - let cbname = '"' . substitute(a:callback, '^s:', '<SID>', '') . '"' - exe 'onoremap <silent>a'.a:char.' <Esc>:call Textobj_'.g:text_object_number.'(0, v:operator, v:prevcount, '.cbname.')<CR>' - exe 'onoremap <silent>i'.a:char.' <Esc>:call Textobj_'.g:text_object_number.'(1, v:operator, v:prevcount, '.cbname.')<CR>' - exe 'xnoremap <silent>a'.a:char.' <Esc>:call Textobj_'.g:text_object_number.'(0, "v", v:prevcount, '.cbname.')<CR>' - exe 'xnoremap <silent>i'.a:char.' <Esc>:call Textobj_'.g:text_object_number.'(1, "v", v:prevcount, '.cbname.')<CR>' -endfunction -" }}} -" Text objects {{{ -" / for regex {{{ -function Textobj_regex(inner, operator) - let pos = getpos('.') - let objstart = 0 - let objlength = 0 - - let line = strpart(getline('.'), 0, pos[2]) - let lines = getline(1, pos[1] - 1) + [line] - let linenum = pos[1] - for line in reverse(lines) - let objstart = match(line, '.*\zs\\\@<!/') - if objstart != -1 - let objlength += strlen(line) - objstart - break - endif - let linenum -= 1 - let objlength += strlen(line) + 1 - endfor - let objstart += a:inner - let objlength -= a:inner - let objstartline = linenum - - let line = strpart(getline('.'), pos[2] - 1) - let lines = [line] + getline(pos[1] + 1, line('$')) - let linenum = pos[1] - for line in lines - let objend = match(line, '\\\@<!/') - if objend != -1 - let objlength += objend - break - endif - let linenum += 1 - let objlength += strlen(line) + 1 - endfor - let objlength -= a:inner - - call cursor(objstartline, objstart + 1) - let objcmd = "normal! ".a:operator.objlength." " - exe objcmd - if a:operator == 'c' - normal l - startinsert - elseif a:operator == 'v' - normal h - endif -endfunction -onoremap <silent>a/ <Esc>:<C-U>call Textobj_regex(0, v:operator)<CR> -onoremap <silent>i/ <Esc>:<C-U>call Textobj_regex(1, v:operator)<CR> -xnoremap <silent>a/ <Esc>:<C-U>call Textobj_regex(0, 'v')<CR> -xnoremap <silent>i/ <Esc>:<C-U>call Textobj_regex(1, 'v')<CR> -" }}} -" }}} -" Foldtext {{{ -let g:Foldtext_enable = 1 -let g:Foldtext_tex_enable = 1 -let g:Foldtext_cpp_enable = 1 -let g:Foldtext_perl_enable = 1 -" }}} -" }}} - |