X-Git-Url: https://git.sthu.org/?a=blobdiff_plain;f=dotfiles%2Fvim%2F.vimrc;h=b657226df4f51211ed470a693f9c1c296de4fa50;hb=bc122006316321e4866504dc392c9dbeb87b109d;hp=7a05e1d5250798c9e3d6c6457632be1c28112158;hpb=0fb103495587561054a6a6eba55f7f078631499d;p=shutils.git diff --git a/dotfiles/vim/.vimrc b/dotfiles/vim/.vimrc index 7a05e1d..b657226 100644 --- a/dotfiles/vim/.vimrc +++ b/dotfiles/vim/.vimrc @@ -1,16 +1,13 @@ " 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. + +"profile start /tmp/profile.log +"profile func * +"profile file * set nocompatible set encoding=utf8 -set modeline set number set backspace=indent,eol,start @@ -25,10 +22,12 @@ set cursorline set laststatus=2 set listchars=tab:»­,trail:·,eol:$ +set virtualedit=block set autoindent set tabstop=4 set shiftwidth=4 +set expandtab if version >= 703 set spelllang=de_at,en @@ -36,6 +35,10 @@ if version >= 703 set colorcolumn=+1 endif +set wildmode=longest,list:longest + +set tags=./tags;/ + " Pathogen runtime path manipulation "call pathogen#infect() "Using the infect method breaks ft detection filetype off @@ -53,7 +56,7 @@ set mouse=a " Use 256 colors set t_Co=256 -let g:CSApprox_attr_map = { 'bold' : 'bold', 'italic' : '', 'sp' : '' } +let g:CSApprox_attr_map = { 'bold' : 'bold', 'italic' : 'underline', 'sp' : 'bg' } colorscheme shuber-wombat @@ -61,8 +64,10 @@ colorscheme shuber-wombat 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 +au Filetype python,tex,c,cpp,cs,objc,java,vim let g:airline#extensions#whitespace#enabled = 0 +" Detect indentation, but otherwise set expandtab if exists(":DetectIndent") au BufReadPost * :DetectIndent endif @@ -71,6 +76,19 @@ endif let g:syntastic_mode_map = { 'mode' : 'active', 'active_filetypes' : [], 'passive_filetypes' : ['html'] } +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +" Airline +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + +let g:airline_powerline_fonts = 0 +let g:airline_theme = 'wombat' + +let g:airline#extensions#tabline#enabled = 1 +let g:airline#extensions#tagbar#enabled = 0 +let g:airline#extensions#whitespace#enabled = 0 +let g:airline#extensions#branch#enabled = 0 +let g:airline#extensions#branch#use_vcscommand = 1 + """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Some macros """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" @@ -85,12 +103,17 @@ endfunction " key bindings """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +nmap :bn +nmap :bp + map NERDCommenterToggle +nmap :NERDTreeToggle +nmap :TagbarToggle -nmap :q -nmap :w -vmap gv -imap +"nmap :q +"nmap :w +"vmap gv +"imap """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" @@ -106,14 +129,14 @@ 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 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 +au Filetype c,cpp,cs,objc map :make +au Filetype java map :!ant -f ../build.xml +au Filetype c,cpp,cs,objc set makeprg=make "Prepend the namespace to an identifier, e.g. 'std::' before 'map' excluding @@ -130,27 +153,31 @@ function PrependCppNamespaceToIdent(ns, 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 // 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' + " 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'] + let id = id +['ostream', 'istream', 'sstream'] let id = id +['pair', 'string'] - let id = ['map'] for i in id call PrependCppNamespaceToIdent("std", i) @@ -164,6 +191,19 @@ function EscapeHexToChar() 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 AddIncludeGuards() + execute "normal! Go#endif" + execute "normal! gg" + call InsertIncludeGuardsWithoutEndif() +endfunction + +autocmd BufNewFile *.{h,hpp,hxx} call AddIncludeGuards() """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" @@ -171,6 +211,7 @@ endfunction """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" au Filetype text set textwidth=80 +au Filetype markddown set textwidth=80 "According to thunderbirds settings au Filetype mail set textwidth=72 au Filetype mail set expandtab @@ -199,12 +240,42 @@ au Filetype php set textwidth=80 "au Filetype php set cindent +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +" maxima +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + +au BufRead,BufNewFile *.wxm set filetype=maxima + + """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " LaTeX """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + +let g:LatexBox_split_side = "rightbelow" +"let g:LatexBox_split_resize = 1 +let g:LatexBox_ref_pattern = '\c\\\a*ref\*\?\_\s*{' + +let g:tex_flavor = "latex" +let g:LatexBox_output_type = "pdf" +let g:LatexBox_viewer = "okular" +let g:LatexBox_latexmk_async = 1 +let g:LatexBox_latexmk_preview_continuously = 1 +"let g:LatexBox_show_warnings = 0 +let g:LatexBox_quickfix = 4 + + +if version >= 700 + au Filetype tex set spell +endif + au BufRead,BufNewFile *.cls set filetype=tex au Filetype tex set textwidth=80 +au Filetype tex set smartindent +" Override Tagbar Toggle with LatexBox TOC +au Filetype tex nmap :LatexTOCToggle +au Filetype tex nmap :LatexLabels + "Remove Umlaute function TexTransUmlaute() @@ -224,22 +295,12 @@ function FindWordRepeatings() " 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 % +au Filetype python map :!python % " vimrc file for following the coding standards specified in PEP 7 & 8. @@ -257,7 +318,7 @@ au Filetype python set textwidth=79 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "Opens the current file in ipe -au Filetype xml map :call OpenIn("ipe") +au Filetype xml map :call OpenIn("ipe") """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" @@ -265,20 +326,58 @@ au Filetype xml map :call OpenIn("ipe") """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "Opens the current file in ipe -au Filetype gnuplot map :call OpenIn("gnuplot -persist") +au Filetype gnuplot map :call OpenIn("gnuplot -persist") + + +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +" remind +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + +au BufRead,BufNewFile */.remind/* set filetype=remind + + +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +" closetag +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + +let g:unaryTagsStack = "" +au Filetype html,xml,xsl source /usr/share/vim/vimfiles/plugin/closetag.vim + + +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +" markdown +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + +let g:instant_markdown_autostart = 0 +let g:instant_markdown_slow = 1 +au Filetype markdown map :InstantMarkdownPreview """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " youcompleteme """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -let g:ycm_min_num_of_chars_for_completion = 999 +let g:ycm_global_ycm_extra_conf = '~/.ycm_extra_conf.py' + +let g:ycm_min_num_of_chars_for_completion = 4 +let g:ycm_collect_identifiers_from_tags_files = 1 +let g:ycm_autoclose_preview_window_after_completion = 1 + let g:ycm_key_list_select_completion = [''] +nnoremap jd :YcmCompleter GoToDefinitionElseDeclaration + +let g:ycm_filetype_whitelist = { 'c' : 1, 'cpp' : 1, 'cs' : 1, 'objc' : 1, 'java' : 1, 'python' : 1 } +"let g:ycm_server_use_vim_stdout = 1 +"let g:ycm_server_log_level = 'debug' if filereadable($HOME . "/.vimrc-local") source ~/.vimrc-local endif +" Being able to load project specific vimrc files +set exrc +set secure +