" 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. set nocompatible set encoding=utf8 set modeline set number set backspace=indent,eol,start set tagstack set grepprg=grep\ -nH\ $* set foldcolumn=1 set incsearch set hlsearch set cursorline set laststatus=2 set listchars=tab:»­,trail:·,eol:$ set autoindent set tabstop=4 set shiftwidth=4 if version >= 703 set spelllang=de_at,en set tabpagemax=20 set colorcolumn=+1 endif " Pathogen runtime path manipulation "call pathogen#infect() "Using the infect method breaks ft detection filetype off call pathogen#runtime_append_all_bundles() call pathogen#helptags() syntax on filetype plugin indent on "Power saving tip: powertop-homepage let &guicursor = &guicursor . ",a:blinkon0" "According to vim help -- enable mouse in xterm... set mouse=a " Use 256 colors set t_Co=256 let g:CSApprox_attr_map = { 'bold' : 'bold', 'italic' : '', 'sp' : '' } colorscheme shuber-wombat " 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,vim syn match BadWhitespace /\s\+$/ containedin=ALL if exists(":DetectIndent") au BufReadPost * :DetectIndent endif let g:syntastic_mode_map = { 'mode' : 'active', 'active_filetypes' : [], 'passive_filetypes' : ['html'] } """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Some macros """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "Open current file with a specific program function OpenIn(prog) execute ":!" . a:prog . " % &" endfunction """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " key bindings """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" map NERDCommenterToggle nmap :q nmap :w vmap gv imap """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " fortran """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "let fortran_free_source=1 au BufNewFile *.f90 set fortran_free_source=1 au Filetype fortran set cindent cst csto=0 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 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 "Prepend the namespace to an identifier, e.g. 'std::' before 'map' excluding "those in C/C++ comments. function PrependCppNamespaceToIdent(ns, id) " To match Not to match " "|id |// id "| id |// /* */ id "|/* */ /* */ id |/* */ // id "|id /* */ |/* id "|*/ id | * id " |/* id */ " |::id " |/**/ ::id " " In order to not match '* id' it is assumed that multi-line comment lines " in the middle begin with a star. " If // and /* and ^* and :: is not prepend: execute ':%s_\(\(\/\/\|\/\*\|^\s*\*[^/]\).*\|::\)\@_' . a:ns . '::' . a:id . '_ge' " If // and :: is not prepend, but */ is, and no further /* or // are found execute ':%s_\(\/\/.*\)\@_' . a:ns . '::' . a:id . '_ge' endfunction "Prepend STL namespace 'std::' to several identifiers function PrependSTLNamespace() let id = [] let id = id +['cin', 'cout', 'cerr', 'endl'] let id = id +['swap', 'sort', 'max', 'min'] let id = id +['vector', 'deque', 'list', 'map', 'multimap', 'set'] let id = id +['queue', 'stack', 'priority_queue'] let id = id +['ostream', 'istream'] let id = id +['pair', 'string'] let id = ['map'] for i in id call PrependCppNamespaceToIdent("std", i) endfor 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 au Filetype mail set expandtab "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 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 Filetype python set textwidth=79 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " XML, Ipe """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "Opens the current file in ipe au Filetype xml map :call OpenIn("ipe") """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " gnuplot """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "Opens the current file in ipe au Filetype gnuplot map :call OpenIn("gnuplot -persist") """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " youcompleteme """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" let g:ycm_min_num_of_chars_for_completion = 999 let g:ycm_key_list_select_completion = [''] if filereadable($HOME . "/.vimrc-local") source ~/.vimrc-local endif