9 se cinkeys=0{,0},0),:,!^F,o,O,e
20 se guifont=Bitstream\ Vera\ Sans\ Mono\ 12
23 highlight StatusLine guifg=white guibg=blue ctermbg=white ctermfg=blue
25 se guifont=Bitstream_Vera_Sans_Mono:h10:cANSI
29 " Set up our variables.
31 if ! exists("b:iainlist") | let b:iainlist = 0 | endif
32 if ! exists("b:iainhex") | let b:iainhex = 0 | endif
33 if ! exists("b:iainfold") | let b:iainfold = 0 | endif
38 let basic='tab:\\_,trail:_,extends:<,precedes:>'
40 let b:iainlist = b:iainlist + 1
41 if b:iainlist > 2 | let b:iainlist = 0 | endif
44 elseif b:iainlist == 1
45 exec "set lcs=" . basic
48 exec "set lcs=" . basic . ",eol:$"
56 let b:iainfold = ! b:iainfold
57 if b:iainfold | foldclose | else | foldopen | endif
65 elseif b:iainlist == 1
74 " Cycle between hex and decimal display of toolbar stuff.
75 fun! Cycle_HexStatusLine()
77 let b:iainhex = ! b:iainhex
78 call Show_StatusLine()
81 fun! Show_StatusLine()
83 let sl1='%2n\:\ %<%f\ [%{Show_List()}%{Show_Case()}%{Show_Tabstop()}%{Show_Paste()}%Y%M%R]\ %='
84 let sl2='\ \|\ P:%4.6o\ L:%4.6l/%-4.6L\ C:%3.6c\ \|\ %P'
87 let hexformat='0\x%02B'
89 exec "set statusline=" . sl1 . hexformat . sl2
92 " Save the current window width so if we change it we can restore it
94 let andyoldcols=&columns
96 " This expands the terminal to display two 80-column files side-by-side
97 " when vim is opened in diff mode.
98 if &diff | let &columns = 164 | endif
100 map <C-"> viwvbi"<ESC>ea"<ESC>
101 map - yyp:s/./-/g<RETURN>:let @/=''<RETURN>:<RETURN>
102 map = yyp:s/./=/g<RETURN>:let @/=''<RETURN>:<RETURN>
106 " Make * and # work the way you expect in visual mode.
107 vnoremap * y/\V<C-R>=substitute(escape(@@,"/\\"),"\n","\\\\n","ge")<CR><CR>
108 vnoremap # y?\V<C-R>=substitute(escape(@@,"?\\"),"\n","\\\\n","ge")<CR><CR>
115 if &ic | return "c" | else | return "C" | endif
123 if &paste | return "p" | else | return "" | endif
126 " Clear Q as we will use it for commands.
129 " Swap hex/decimal statusline with Qx
130 map Qx :call Cycle_HexStatusLine()<CR>:<CR>
131 " Swap case-sensitivity with Qc.
132 map Qc :call Invert_Case()<CR>:<CR>
133 " Cycle list styles with Ql.
134 map Ql :call Cycle_List()<CR>:<CR>
135 " Change to ts=2 with Q2.
136 map Q2 :se ts=2<CR>:<CR>
137 " Change to ts=4 with Q4.
138 map Q4 :se ts=4<CR>:<CR>
139 " Change to ts=8 with Q8.
140 map Q8 :se ts=8<CR>:<CR>
141 " Change to ts=16 with Q6.
142 map Q6 :se ts=16<CR>:<CR>
143 " Change to ts=32 with Q3.
144 map Q3 :se ts=32<CR>:<CR>
145 " Change foldmethod with Qf.
146 map Qf :call Cycle_Fold()<CR>:<CR>
147 " Change number mode with Qn.
148 map Qn :se number!<CR>:<CR>
150 " Vim 7 has tabs. Default "next tab" mapping is gt. Add "previous tab" as gb.
153 call Show_StatusLine()
155 au VimLeave * if exists("andyoldcols") | let &columns=andyoldcols | endif
157 " Autocommands to setup features we only want in certain modes...
159 " ... For C/C++ files:
161 au BufEnter * if &ft == "c" || &ft == "cpp" | call CMode_map() | endif
162 au BufLeave * if &ft == "c" || &ft == "cpp" | call CMode_unmap() | endif
164 " ... For Perl files:
166 au BufEnter * if &ft == "perl" | call PerlMode_map() | endif
167 au BufLeave * if &ft == "perl" | call PerlMode_unmap() | endif
171 au BufEnter * if &ft == "make" | call MakeMode_map() | endif
172 au BufLeave * if &ft == "make" | call MakeMode_unmap() | endif
174 " Functions to call when we enter/leave a programming language buffer...
176 " ... For C-like languages:
179 set cinkeys=0{,0},:,0#,!^F,o,O,e
180 set cinwords=if,else,while,do,for,switch
189 set cinkeys=0{,0},:,!^F,o,O,e
190 set cinwords=if,else,while,do,for,eval
193 fun! PerlMode_unmap()
194 set foldmethod=manual
204 fun! MakeMode_unmap()