From: Iain Patterson Date: Wed, 14 Dec 2005 11:01:24 +0000 (+0000) Subject: Always show status bar. X-Git-Url: http://git.iain.cx/?p=profile.git;a=commitdiff_plain;h=ffda7fdecab70b22554d7c9df55fb1a8cded5b1d Always show status bar. Blue status bar. Use ,l to cycle between list formats. nolist. list with tabs replaced by \___. list with tabs replaced by \___ and EOL denoted by $. Use ,c to cycle between case-sensitive and -insensitive matching. Status bar shows list format, case matching and code of character under cursor. Set wide columns for diff view. Restore terminal columns on exit. Change indent options for different file types. git-svn-id: https://svn.cambridge.iain.cx/profile/trunk@11 6be0d1a5-5cfe-0310-89b6-964be062b18b --- diff --git a/.vimrc b/.vimrc index 9ca37c6..5a3622a 100755 --- a/.vimrc +++ b/.vimrc @@ -12,19 +12,144 @@ 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! + +" Initialise list format per buffer. +au BufEnter * let b:iainlist = 0 + +fun Cycle_List() + let b:iainlist += 1 + if b:iainlist > 2 | let b:iainlist = 0 | endif + if b:iainlist == 0 + set nolist + elseif b:iainlist == 1 + set lcs=tab:\\_,trail:_,extends:<,precedes:> + set list + else + set lcs=tab:\\_,trail:_,extends:<,precedes:>,eol:$ + set list + endif +endfun + +fun Show_List() + if b:iainlist == 0 + " No list. + return " " + elseif b:iainlist == 1 + " Just tabs. + return "\\_" + else + " Full list. + return "\.\$" + endif +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 -:autocmd! -autocmd Syntax c se cinkeys=0{,0},0),:,0#,!^F,o,O,e -autocmd Syntax perl se cinkeys=0{,0},0),:,!^F,o,O,e -autocmd Syntax php se cinkeys=0{,0},0),:,!^F,o,O,e +se tags=~/.ctags + +fun Invert_Case() + let &ic = ! &ic +endfun + +fun Show_Case() + if &ic | return "ca" | else | return "Ca" | endif +endfun + +set statusline=%2n\:\ %<%t\ [%{Show_List()}][%{Show_Case()}]%y%m%r%=%b\ 0\x%02B\ (%3.6c,%-4.6l)\ %4.6L\ %P +" Swap case-sensitivity with ,c. +map ,c :call Invert_Case(): +" Cycle list styles with ,l. +map ,l :call Cycle_List(): + +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 PHP files: + +au BufEnter * if &ft == "php" | call PHPMode_map() | endif +au BufLeave * if &ft == "php" | call PHPMode_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 + set foldmethod=indent +endfun + +fun PerlMode_unmap() + set foldmethod=manual +endfun + +fun PHPMode_map() + set nocindent + set autoindent + set foldmethod=indent +endfun + +fun PHPMode_unmap() + set noautoindent + set cindent + set foldmethod=manual +endfun + +" ... For makefiles: + +fun MakeMode_map() + set list + set noexpandtab +endfun + +fun MakeMode_unmap() + set nolist + set expandtab +endfun