7c4d049abaa82c181a0149509c4e750eb539cf07
[shutils.git] / dotfiles / vim / .vimrc
1 " Purpose: My personal .vimrc
2 " Author: Stefan Huber
3 "
4 "Essential resources for vim users
5 " - vim.sf.net -- find tips and scripts for vim and gvim
6 "
7 "By calling ":help keyword" you get help for the specific
8 "option and setting.
9
10
11 " Pathogen runtime path manipulation
12 "call pathogen#infect() "Using the infect method breaks ft detection
13 call pathogen#runtime_append_all_bundles()
14
15
16 "Activate syntax highlighting
17 syntax on
18 "Activate filetype plugins: syntax highlighting, indentation, and more
19 filetype plugin indent on
20
21 set modeline
22 set number
23 set backspace=indent,eol,start
24
25 "vim-7 and newer has vimspell (spell checker) built in
26 if version >= 703
27 set spelllang=de_at,en
28 set tabpagemax=20
29 "set colorcolumn=80,+1
30 set colorcolumn=+1
31 endif
32
33 "Set some properties for ctags, grep and the size of the
34 "most-left column for foldings
35 set tagstack
36 set grepprg=grep\ -nH\ $*
37 set foldcolumn=1
38
39 "Set incremental search and highlighted search results
40 set incsearch
41 set hlsearch
42
43
44 "Power saving tip: powertop-homepage
45 let &guicursor = &guicursor . ",a:blinkon0"
46 "According to vim help -- enable mouse in xterm...
47 set mouse=a
48
49
50 "Open current file with a specific program
51 function OpenIn(prog)
52 execute ":!" . a:prog . " % &"
53 endfunction
54
55
56 " Use the below highlight group when displaying bad whitespace is desired.
57 highlight BadWhitespace ctermbg=red guibg=red
58 " Make trailing whitespace be flagged as bad.
59 au Filetype python,tex,c,cpp,cs,objc,java syn match BadWhitespace /\s\+$/ containedin=ALL
60
61 set listchars=tab:»­,trail:·,eol:$
62
63
64 set autoindent
65 set tabstop=4
66 set shiftwidth=4
67 au Filetype * :DetectIndent
68 "au Filetype python,tex,c,cpp,cs,objc,java :DetectIndent
69 "let g:detectindent_preferred_expandtab = 1
70 "let g:detectindent_preferred_indent = 4
71
72
73
74 " Use 256 colors
75 set t_Co=256
76 let g:CSApprox_attr_map = { 'bold' : 'bold', 'italic' : '', 'sp' : '' }
77 colorscheme shuber-wombat
78
79 set cursorline
80
81
82 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
83 " fortran
84 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
85
86 "let fortran_free_source=1
87 au BufNewFile *.f90 set fortran_free_source=1
88 au BufRead,BufNewFile *.INC set filetype=fortran
89 au Filetype fortran set cindent cst csto=0
90
91
92
93
94 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
95 " IRSSI logs
96 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
97
98 au BufRead,BufNewFile */.irssi/logs/*.log set filetype=irssilog
99
100
101 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
102 " Easychair conference system review form
103 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
104
105 au BufRead,BufNewFile review_form_*.txt set filetype=easychair
106 au Syntax easychair runtime! syntax/easychair.vim
107
108
109 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
110 " C, C++, C#, objc, java
111 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
112
113 au Filetype c,cpp,cs,objc,java map <F4> :cnext <CR>
114 au Filetype c,cpp,cs,objc,java map <S-F4> :cprevious <CR>
115 au Filetype c,cpp,cs,objc,java map <F11> :AS <CR>
116 au Filetype c,cpp,cs,objc,java map <S-F11> :A <CR>
117 au Filetype c,cpp,cs,objc,java set cindent cst csto=0
118 au Filetype c,cpp,cs,objc map <F7> :make <CR>
119 au Filetype java map <F7> :!ant -f ../build.xml <CR>
120 au Filetype c,cpp,cs,obj set makeprg=make
121
122
123 "Adds STL prefix 'std::' to 'id'
124 function AddNamespaceDeclTo(ns, id)
125 echo "Add '" . a:ns . "' to " . a:id
126 "Line starts with a:id
127 execute ":%s!^\\(\\s*\\)" . a:id . "\\>!\\1" . a:ns . "::" . a:id . "!e"
128 "Line beginning, white space, not # or / (preprocessor or comment)
129 execute ":%s!^\\(\\s*[^#/].*[^:]\\)\\<" . a:id . "\\>!\\1" . a:ns . "::" . a:id . "!ge"
130 endfunction
131
132
133 "Adds STL prefix 'std::' to several identifiers
134 function AddSTLNamespaceDecl()
135 call AddNamespaceDeclTo("std","cin")
136 call AddNamespaceDeclTo("std","cout")
137 call AddNamespaceDeclTo("std","cerr")
138
139 call AddNamespaceDeclTo("std","swap")
140 call AddNamespaceDeclTo("std","sort")
141 call AddNamespaceDeclTo("std","max")
142 call AddNamespaceDeclTo("std","min")
143
144 call AddNamespaceDeclTo("std","deque")
145 call AddNamespaceDeclTo("std","endl")
146 call AddNamespaceDeclTo("std","list")
147 call AddNamespaceDeclTo("std","map")
148 call AddNamespaceDeclTo("std","multimap")
149 call AddNamespaceDeclTo("std","ostream")
150 call AddNamespaceDeclTo("std","pair")
151 call AddNamespaceDeclTo("std","priority_queue")
152 call AddNamespaceDeclTo("std","set")
153 call AddNamespaceDeclTo("std","queue")
154 call AddNamespaceDeclTo("std","stack")
155 call AddNamespaceDeclTo("std","string")
156 call AddNamespaceDeclTo("std","vector")
157 endfunction
158
159
160 function EscapeHexToChar()
161 echo 'Call "x/Nxb addr" in GDB to print N bytes at addr'
162 execute '%s/^.*://'
163 execute '%s/\s*0x\(\x\x\)/\\x\1/g'
164 execute '%s/^\(.*\)$/"\1"/'
165 endfunction
166
167
168
169 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
170 " Text and mail
171 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
172
173 au Filetype text set textwidth=80
174 "According to thunderbirds settings
175 au Filetype mail set textwidth=72
176
177 "a and w reformat the paragraph automatically and a new paragraph
178 "is indicated by lines not ending with white-space
179 if version>=700
180 au Filetype mail,text set fo+=n spell
181 endif
182
183 "Scissor line
184 au Filetype mail syn match Statement /^\s*-*\s*>8\s*-*\s*$/
185 au Filetype mail syn match Statement /^\s*-*\s*8<\s*-*\s*$/
186
187
188
189 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
190 " PHP
191 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
192
193 "au Filetype php set fo=tcqn
194 if version >= 700
195 au Filetype php set spell
196 endif
197
198 au Filetype php set textwidth=80
199 "au Filetype php set cindent
200
201
202
203
204 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
205 " LaTeX
206 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
207
208 au BufRead,BufNewFile *.cls set filetype=tex
209 au Filetype tex set textwidth=80
210
211 "Remove Umlaute
212 function TexTransUmlaute()
213 execute ':%s/ü/\\\"u/ge'
214 execute ':%s/Ü/\\\"U/&'
215 execute ':%s/ö/\\\"o/&'
216 execute ':%s/Ö/\\\"O/&'
217 execute ':%s/ä/\\\"a/&'
218 execute ':%s/Ä/\\\"A/&'
219 execute ':%s/ß/\\\"s/&'
220 execute ':%s/²/\^2/&'
221 endfunction
222
223
224 function FindWordRepeatings()
225 execute '/\(\<\S\+\>\)\s\+\1\>'
226 " let pos = search('\(\<\S\+\>\)\s\+\1\>', "cw")
227 " call cursor(pos)
228 endfunction
229
230
231 let g:tex_flavor = "latex"
232 let g:LatexBox_viewer="okular"
233 let g:LatexBox_latexmk_options="-pvc"
234
235 au Filetype tex set smartindent
236
237 au Filetype tex map! ,b \begin{}<Esc>i
238 au Filetype tex map! ,e <esc>:call TexClosePrev(0)<cr>a<cr>
239 au Filetype tex map! ,i \begin{itemize}<Return>\end{itemize}<ESC>O\item
240 au Filetype tex map! ,f \begin{frame}<Return>\end{frame}<ESC>O\frametitle{
241 au Filetype tex map! ,p \begin{figure}<Return>\end{figure}<ESC>O\centering<Return>\includegraphics{
242
243
244
245 if version >= 700
246 au Filetype tex set spell
247 endif
248
249
250
251 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
252 " python
253 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
254
255 au Filetype python map <F5> :!python % <CR>
256
257
258 " vimrc file for following the coding standards specified in PEP 7 & 8.
259
260 " Number of spaces that a pre-existing tab is equal to.
261 " For the amount of space used for a new tab use shiftwidth.
262 au Filetype python set shiftwidth=4
263 au Filetype python set expandtab
264
265 " Wrap text after a certain number of characters
266 au BufRead,BufNewFile *.py,*.pyw set textwidth=79
267
268
269
270
271 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
272 " XML, Ipe
273 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
274
275 "Opens the current file in ipe
276 au Filetype xml map <M-o> :call OpenIn("ipe") <CR>
277
278
279 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
280 " gnuplot
281 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
282
283
284 au BufRead,BufNewFile *.plt set filetype=gnuplot
285 au BufRead,BufNewFile *.plot set filetype=gnuplot
286 au BufRead,BufNewFile *.gnuplot set filetype=gnuplot
287
288 "Opens the current file in ipe
289 au Filetype gnuplot map <M-o> :call OpenIn("gnuplot -persist") <CR>
290
291
292
293 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
294 " Commenting
295 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
296
297 let g:EnhCommentifyUseAltKeys = 'Yes'
298
299
300
301 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
302 " Tab completion
303 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
304
305 "function InsertTabWrapper()
306 " let col = col('.') - 1
307 " if !col || getline('.')[col - 1] !~ '\k'
308 " return "\<tab>"
309 " else
310 " return "\<c-p>"
311 " endif
312 "endfunction
313
314 " Remap the tab key to select action with InsertTabWrapper
315 "inoremap <C-space> <c-r>=InsertTabWrapper()<cr>
316
317 let g:SuperTabMappingForward = "<C-space>"
318 let g:SuperTabDefaultCompletionType = 'context'
319 "let g:SuperTabDefaultCompletionType = '<c-x><c-u>'
320
321
322
323 if filereadable($HOME . "/.vimrc-local")
324 source ~/.vimrc-local
325 endif
326
327