" Purpose: My personal .vimrc " Author: Stefan Huber " "Essential resources for vim users " - vim.sf.net -- find tips and scripts for vim and gvim " "By calling ":help keyword" you get help for the specific "option and setting. " Pathogen runtime path manipulation "call pathogen#infect() "Using the infect method breaks ft detection call pathogen#runtime_append_all_bundles() "Activate syntax highlighting syntax on "Activate filetype plugins: syntax highlighting, indentation, and more filetype plugin indent on set modeline set number set backspace=indent,eol,start "vim-7 and newer has vimspell (spell checker) built in if version >= 703 set spelllang=de_at,en set tabpagemax=20 "set colorcolumn=80,+1 set colorcolumn=+1 endif "Set some properties for ctags, grep and the size of the "most-left column for foldings set tagstack set grepprg=grep\ -nH\ $* set foldcolumn=1 "Set incremental search and highlighted search results set incsearch set hlsearch "Power saving tip: powertop-homepage let &guicursor = &guicursor . ",a:blinkon0" "According to vim help -- enable mouse in xterm... set mouse=a "Open current file with a specific program function OpenIn(prog) execute ":!" . a:prog . " % &" endfunction " Use the below highlight group when displaying bad whitespace is desired. highlight BadWhitespace ctermbg=red guibg=red " Make trailing whitespace be flagged as bad. au Filetype python,tex,c,cpp,cs,objc,java syn match BadWhitespace /\s\+$/ containedin=ALL set listchars=tab:»­,trail:·,eol:$ set autoindent set tabstop=4 set shiftwidth=4 au Filetype * :DetectIndent "au Filetype python,tex,c,cpp,cs,objc,java :DetectIndent "let g:detectindent_preferred_expandtab = 1 "let g:detectindent_preferred_indent = 4 " Use 256 colors set t_Co=256 let g:CSApprox_attr_map = { 'bold' : 'bold', 'italic' : '', 'sp' : '' } colorscheme shuber-wombat set cursorline """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " fortran """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "let fortran_free_source=1 au BufNewFile *.f90 set fortran_free_source=1 au BufRead,BufNewFile *.INC set filetype=fortran au Filetype fortran set cindent cst csto=0 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " IRSSI logs """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" au BufRead,BufNewFile */.irssi/logs/*.log set filetype=irssilog """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Easychair conference system review form """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" au BufRead,BufNewFile review_form_*.txt set filetype=easychair au Syntax easychair runtime! syntax/easychair.vim """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " C, C++, C#, objc, java """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" au Filetype c,cpp,cs,objc,java map :cnext au Filetype c,cpp,cs,objc,java map :cprevious au Filetype c,cpp,cs,objc,java map :AS au Filetype c,cpp,cs,objc,java map :A au Filetype c,cpp,cs,objc,java set cindent cst csto=0 au Filetype c,cpp,cs,objc map :make au Filetype java map :!ant -f ../build.xml au Filetype c,cpp,cs,obj set makeprg=make "Adds STL prefix 'std::' to 'id' function AddNamespaceDeclTo(ns, id) echo "Add '" . a:ns . "' to " . a:id "Line starts with a:id execute ":%s!^\\(\\s*\\)" . a:id . "\\>!\\1" . a:ns . "::" . a:id . "!e" "Line beginning, white space, not # or / (preprocessor or comment) execute ":%s!^\\(\\s*[^#/].*[^:]\\)\\<" . a:id . "\\>!\\1" . a:ns . "::" . a:id . "!ge" endfunction "Adds STL prefix 'std::' to several identifiers function AddSTLNamespaceDecl() call AddNamespaceDeclTo("std","cin") call AddNamespaceDeclTo("std","cout") call AddNamespaceDeclTo("std","cerr") call AddNamespaceDeclTo("std","swap") call AddNamespaceDeclTo("std","sort") call AddNamespaceDeclTo("std","max") call AddNamespaceDeclTo("std","min") call AddNamespaceDeclTo("std","deque") call AddNamespaceDeclTo("std","endl") call AddNamespaceDeclTo("std","list") call AddNamespaceDeclTo("std","map") call AddNamespaceDeclTo("std","multimap") call AddNamespaceDeclTo("std","ostream") call AddNamespaceDeclTo("std","pair") call AddNamespaceDeclTo("std","priority_queue") call AddNamespaceDeclTo("std","set") call AddNamespaceDeclTo("std","queue") call AddNamespaceDeclTo("std","stack") call AddNamespaceDeclTo("std","string") call AddNamespaceDeclTo("std","vector") endfunction function EscapeHexToChar() echo 'Call "x/Nxb addr" in GDB to print N bytes at addr' execute '%s/^.*://' execute '%s/\s*0x\(\x\x\)/\\x\1/g' execute '%s/^\(.*\)$/"\1"/' endfunction """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Text and mail """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" au Filetype text set textwidth=80 "According to thunderbirds settings au Filetype mail set textwidth=72 "a and w reformat the paragraph automatically and a new paragraph "is indicated by lines not ending with white-space if version>=700 au Filetype mail,text set fo+=n spell endif "Scissor line au Filetype mail syn match Statement /^\s*-*\s*>8\s*-*\s*$/ au Filetype mail syn match Statement /^\s*-*\s*8<\s*-*\s*$/ """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " PHP """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "au Filetype php set fo=tcqn if version >= 700 au Filetype php set spell endif au Filetype php set textwidth=80 "au Filetype php set cindent """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " LaTeX """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" au BufRead,BufNewFile *.cls set filetype=tex au Filetype tex set textwidth=80 "Remove Umlaute function TexTransUmlaute() execute ':%s/ü/\\\"u/ge' execute ':%s/Ü/\\\"U/&' execute ':%s/ö/\\\"o/&' execute ':%s/Ö/\\\"O/&' execute ':%s/ä/\\\"a/&' execute ':%s/Ä/\\\"A/&' execute ':%s/ß/\\\"s/&' execute ':%s/²/\^2/&' endfunction function FindWordRepeatings() execute '/\(\<\S\+\>\)\s\+\1\>' " let pos = search('\(\<\S\+\>\)\s\+\1\>', "cw") " call cursor(pos) endfunction let g:tex_flavor = "latex" let g:LatexBox_viewer="okular" let g:LatexBox_latexmk_options="-pvc" au Filetype tex set smartindent au Filetype tex map! ,b \begin{}i au Filetype tex map! ,e :call TexClosePrev(0)a au Filetype tex map! ,i \begin{itemize}\end{itemize}O\item au Filetype tex map! ,f \begin{frame}\end{frame}O\frametitle{ au Filetype tex map! ,p \begin{figure}\end{figure}O\centering\includegraphics{ if version >= 700 au Filetype tex set spell endif """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " python """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" au Filetype python map :!python % " vimrc file for following the coding standards specified in PEP 7 & 8. " Number of spaces that a pre-existing tab is equal to. " For the amount of space used for a new tab use shiftwidth. au Filetype python set shiftwidth=4 au Filetype python set expandtab " Wrap text after a certain number of characters au BufRead,BufNewFile *.py,*.pyw set textwidth=79 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " XML, Ipe """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "Opens the current file in ipe au Filetype xml map :call OpenIn("ipe") """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " gnuplot """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" au BufRead,BufNewFile *.plt set filetype=gnuplot au BufRead,BufNewFile *.plot set filetype=gnuplot au BufRead,BufNewFile *.gnuplot set filetype=gnuplot "Opens the current file in ipe au Filetype gnuplot map :call OpenIn("gnuplot -persist") """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Commenting """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" let g:EnhCommentifyUseAltKeys = 'Yes' """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Tab completion """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "function InsertTabWrapper() " let col = col('.') - 1 " if !col || getline('.')[col - 1] !~ '\k' " return "\" " else " return "\" " endif "endfunction " Remap the tab key to select action with InsertTabWrapper "inoremap =InsertTabWrapper() let g:SuperTabMappingForward = "" let g:SuperTabDefaultCompletionType = 'context' "let g:SuperTabDefaultCompletionType = '' if filereadable($HOME . "/.vimrc-local") source ~/.vimrc-local endif