" $Id$ se nocp se ts=2 se bs=2 se sw=2 se expandtab se ruler se cindent se cinkeys=0{,0},0),:,!^F,o,O,e se showcmd se go=agilmrtT se hlsearch se incsearch se ignorecase se smartcase se shm=aot se laststatus=2 syn enable if has("gui_running") se guifont=Bitstream\ Vera\ Sans\ Mono\ 12 colo darkblue endif highlight StatusLine guifg=white guibg=blue ctermbg=white ctermfg=blue if has("win32") se guifont=Bitstream_Vera_Sans_Mono:h10:cANSI endif :autocmd! " Set up our variables. fun! Iain_Vars() if ! exists("b:iainlist") | let b:iainlist = 0 | endif if ! exists("b:iainhex") | let b:iainhex = 0 | endif endfun " Change list mode. fun! Cycle_List() let basic='tab:\\_,trail:_,extends:<,precedes:>' call Iain_Vars() let b:iainlist = b:iainlist + 1 if b:iainlist > 2 | let b:iainlist = 0 | endif if b:iainlist == 0 set nolist elseif b:iainlist == 1 exec "set lcs=" . basic set list else exec "set lcs=" . basic . ",eol:$" set list endif endfun fun! Show_List() call Iain_Vars() if b:iainlist == 0 " No list. return " " elseif b:iainlist == 1 " Just tabs. return "_" else " Full list. return "\$" endif endfun " Cycle between hex and decimal display of toolbar stuff. fun! Cycle_HexStatusLine() call Iain_Vars() let b:iainhex = ! b:iainhex call Show_StatusLine() endfun fun! Show_StatusLine() call Iain_Vars() let sl1='%2n\:\ %<%f\ [%{Show_List()}%{Show_Case()}%{Show_Tabstop()}%{Show_Paste()}%Y%M%R]\ %=' let sl2='\ \|\ P:%4.6o\ L:%4.6l/%-4.6L\ C:%3.6c\ \|\ %P' let hexformat='%b' if b:iainhex let hexformat='0\x%02B' endif exec "set statusline=" . sl1 . hexformat . sl2 endfun " Save the current window width so if we change it we can restore it " when we quit. let andyoldcols=&columns " This expands the terminal to display two 80-column files side-by-side " when vim is opened in diff mode. if &diff | let &columns = 164 | endif map viwvbi"ea" map - yyp:s/./-/g:let @/='': map = yyp:s/./=/g:let @/='': command! W :w se tags=~/.ctags " Make * and # work the way you expect in visual mode. vnoremap * y/\V=substitute(escape(@@,"/\\"),"\n","\\\\n","ge") vnoremap # y?\V=substitute(escape(@@,"?\\"),"\n","\\\\n","ge") fun! Invert_Case() let &ic = ! &ic endfun fun! Show_Case() if &ic | return "c" | else | return "C" | endif endfun fun! Show_Tabstop() return &ts endfun fun! Show_Paste() if &paste | return "p" | else | return "" | endif endfun " Clear Q as we will use it for commands. map Q " Swap hex/decimal statusline with Qx map Qx :call Cycle_HexStatusLine(): " Swap case-sensitivity with Qc. map Qc :call Invert_Case(): " Cycle list styles with Ql. map Ql :call Cycle_List(): " Change to ts=2 with Q2. map Q2 :se ts=2: " Change to ts=4 with Q4. map Q4 :se ts=4: " Change to ts=8 with Q8. map Q8 :se ts=8: " Change to ts=16 with Q6. map Q6 :se ts=16: " Change to ts=32 with Q3. map Q3 :se ts=32: " Change foldmethod with Qf. map Qf :se foldenable!: " Change number mode with Qn. map Qn :se number!: " Toggle paste mode with Qp. map Qp :se paste!: " Vim 7 has tabs. Default "next tab" mapping is gt. Add "previous tab" as gb. map gb :tabPrev call Show_StatusLine() au VimLeave * if exists("andyoldcols") | let &columns=andyoldcols | endif " Autocommands to setup features we only want in certain modes... " ... For C/C++ files: au BufEnter * if &ft == "c" || &ft == "cpp" | call CMode_map() | endif au BufLeave * if &ft == "c" || &ft == "cpp" | call CMode_unmap() | endif " ... For Perl files: au BufEnter * if &ft == "perl" | call PerlMode_map() | endif au BufLeave * if &ft == "perl" | call PerlMode_unmap() | endif " ... For makefiles: au BufEnter * if &ft == "make" | call MakeMode_map() | endif au BufLeave * if &ft == "make" | call MakeMode_unmap() | endif " Functions to call when we enter/leave a programming language buffer... " ... For C-like languages: fun! CMode_map() set cinkeys=0{,0},:,0#,!^F,o,O,e set cinwords=if,else,while,do,for,switch endfun fun! CMode_unmap() endfun " .. For Perl files: fun! PerlMode_map() set cinkeys=0{,0},:,!^F,o,O,e set cinwords=if,else,while,do,for,eval endfun fun! PerlMode_unmap() set foldmethod=manual endfun " ... For makefiles: fun! MakeMode_map() set list set noexpandtab endfun fun! MakeMode_unmap() set nolist set expandtab endfun