X-Git-Url: https://git.sthu.org/?a=blobdiff_plain;f=dotfiles%2Fvim%2F.vimrc;h=5da54996af79d7730b9e6dfb1fec05781fb8b839;hb=ba8d944658a4e8b99d9c5e4762da74ca5475d213;hp=739ae07cf327d4bcfbd6b53d23d2e39b0059a296;hpb=e24bd8b17586664e83ea84ea35ea8a05a486d6a8;p=shutils.git diff --git a/dotfiles/vim/.vimrc b/dotfiles/vim/.vimrc index 739ae07..5da5499 100644 --- a/dotfiles/vim/.vimrc +++ b/dotfiles/vim/.vimrc @@ -8,99 +8,98 @@ "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 nocompatible +set encoding=utf8 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 -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 cursorline +set laststatus=2 set listchars=tab:»­,trail:·,eol:$ - set autoindent set tabstop=4 -au Filetype python,tex,c,cpp,cs,objc,java :DetectIndent -"let g:detectindent_preferred_expandtab = 1 -"let g:detectindent_preferred_indent = 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 -set cursorline +" 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 -""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -" 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 +if exists(":DetectIndent") + au BufReadPost * :DetectIndent +endif +let g:syntastic_mode_map = { 'mode' : 'active', 'active_filetypes' : [], 'passive_filetypes' : ['html'] } """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -" IRSSI logs +" Some macros """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -au BufRead,BufNewFile */.irssi/logs/*.log set filetype=irssilog +"Open current file with a specific program +function OpenIn(prog) + execute ":!" . a:prog . " % &" +endfunction """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -" Easychair conference system review form +" key bindings """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -au BufRead,BufNewFile review_form_*.txt set filetype=easychair -au Syntax easychair runtime! syntax/easychair.vim +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 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" @@ -115,53 +114,73 @@ 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 -au Filetype c,cpp,cs,obj set shiftwidth=4 -"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" +"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 + " |#include + " + " In order to not match '* id' it is assumed that multi-line comment lines + " in the middle begin with a star. + + " If #include and // and /* and ^* and :: is not prepend: + execute ':%s@\(\(#include\|\/\/\|\/\*\|^\s*\*[^/]\).*\|::\)\@@' . a:ns . '::' . a:id . '@ge' + " If #include and // and :: is not prepend, but */ is, and no further /* or // are found + execute ':%s@\(\(#include\|\/\/\).*\)\@@' . a:ns . '::' . a:id . '@ge' + endfunction +"Prepend STL namespace 'std::' to several identifiers +function PrependSTLNamespace() + " This list of identifier is not complete, but adding all of them is too + " much. We rather like to add identifieres that are 'typical' for C++. + " Others, like 'move' are likely to not be C++ specific. In this cases the + " user is asked to call PrependCppNamespaceToIdent by hand. + 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', 'sstream'] + let id = id +['pair', 'string'] + + for i in id + call PrependCppNamespaceToIdent("std", i) + endfor +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") +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 +function InsertIncludeGuardsWithoutEndif() + let gatename = substitute(expand("%:t"), "\\.", "_", "g") . '_' . strpart(system('pwgen -c 16 1'), 0, 16) + execute "normal! i#ifndef " . gatename + execute "normal! o#define " . gatename +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"/' +function AddIncludeGuards() + execute "normal! Go#endif" + execute "normal! gg" + call InsertIncludeGuardsWithoutEndif() endfunction +autocmd BufNewFile *.{h,hpp} call AddIncludeGuards() """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" @@ -171,11 +190,12 @@ endfunction 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 + au Filetype mail,text set fo+=n spell endif "Scissor line @@ -183,22 +203,19 @@ 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 + au Filetype php set spell endif au Filetype php set textwidth=80 "au Filetype php set cindent - - """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " LaTeX """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" @@ -208,53 +225,39 @@ 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/&' + 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\>' + 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 set shiftwidth=4 - -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 + 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. @@ -263,9 +266,7 @@ 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 - - +au Filetype python set textwidth=79 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" @@ -280,45 +281,21 @@ 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 +" youcompleteme """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -let g:EnhCommentifyUseAltKeys = 'Yes' +let g:ycm_min_num_of_chars_for_completion = 999 +let g:ycm_key_list_select_completion = [''] -""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -" 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 = '' - - -source ~/.vimrc-local +if filereadable($HOME . "/.vimrc-local") + source ~/.vimrc-local +endif