X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=vimrc;h=42479fa64c76bc70bac6e0bbd053439f71181410;hb=eabf70b33b4b4f4b7e2e077e2ffa070ab914531b;hp=48f52f335e1deec75a45c1219ae38d4df5978cbd;hpb=0c40bebfe732f379daa3826b8be1acf90bb33052;p=config%2Fdotfiles.git diff --git a/vimrc b/vimrc index 48f52f3..42479fa 100644 --- a/vimrc +++ b/vimrc @@ -70,18 +70,32 @@ if exists('+wildignorecase') set wildignorecase endif +" Ignore files with the following extensions because I almost never want to +" edit them in Vim (specifying them manually still works of course). +set wildignore= +" C +set wildignore+=*.o,*.d,*.so +" Java +set wildignore+=*.class +" LaTeX +set wildignore+=*.aux,*.log,*.out,*.toc,*.pdf +" Python +set wildignore+=*.pyc + " Show completion menu even if only one entry matches. if exists('+completeopt') set completeopt+=menuone endif -" Increase history of executed commands (:). +" Increase history of executed commands (:) and search patterns (/). set history=1000 " Increase number of possible undos. set undolevels=1000 -" Remember marks (including the last cursor position) for more files. +" Remember marks (including the last cursor position) for more files. ^= is +" necessary because 'viminfo' is parsed from the beginning and the first match +" is used. if has('viminfo') set viminfo^='1000 endif @@ -92,7 +106,7 @@ if exists('+cryptmethod') endif " Clear all vimrc-related autocmds. Has to be done here as the vimrc augroup -" is used multiple times. +" is used multiple times. Necessary to support reloading the vimrc. if has('autocmd') augroup vimrc autocmd! @@ -175,7 +189,7 @@ endif set virtualedit=block " Already display matches while typing the search command. This makes spotting -" errors easy. +" typos easy and searching faster. set incsearch " Activate syntax folding. @@ -188,6 +202,8 @@ if has('folding') endif set foldlevel=99 " no closed folds at default, 'foldenable' would disable " folding which is not what I want + " Don't open folds for block movements like '(', '{', '[[', '[{', etc. + set foldopen-=block endif " Only check case if the searched word contains a capital character. @@ -205,7 +221,7 @@ endif " Allow buffers with changes to be hidden. Very important for effective " editing with multiple buffers. Prevents the "E37: No write since last change -" (add ! to override)" warning. +" (add ! to override)" warning when switching buffers. set hidden @@ -357,6 +373,16 @@ if has('statusline') endif endfunction + " Return current syntax group in brackets or nothing if there's none. + function! StatuslineSyntaxGroup() + let l:group = synIDattr(synID(line('.'), col('.'), 1), 'name') + if l:group != '' + return '[' . l:group . '] ' + else + return '' + endif + endfunction + set statusline= " on the left set statusline+=%02n " buffer number @@ -516,6 +542,11 @@ if exists('+spell') nnoremap sn :set nospell nnoremap se :set spell spelllang=en_us nnoremap sd :set spell spelllang=de_de +" If no spell support is available, these mappings do nothing. +else + nmap sn + nmap se + nmap sd endif " Add semicolon to the end of the line. Thanks to @@ -570,7 +601,7 @@ endif " In case 'hlsearch' is used disable it with . Thanks to frogonwheels and " vimgor (bot) in #vim on Freenode (2010-03-30 05:58 CEST). -noremap :nohlsearch +nnoremap :nohlsearch " in insert mode deletes a lot, break undo sequence before deleting the " line so the change can be undone. Thanks to the vimrc_example.vim file in @@ -731,11 +762,17 @@ if has('syntax') let g:hs_highlight_boolean = 1 let g:hs_highlight_types = 1 let g:hs_highlight_more_types = 1 + " Java. + let g:java_highlight_java_lang_ids = 1 " color java.lang.* identifiers " Perl. let g:perl_fold = 1 let g:perl_fold_blocks = 1 let g:perl_nofold_packages = 1 let g:perl_include_pod = 1 " syntax coloring for PODs + " PHP. + let g:php_folding = 3 " fold functions + let g:php_short_tags = 0 " no short tags (), not always usable + let g:php_sql_query = 1 " highlight SQL queries in strings " Python. let g:python_highlight_all = 1 " Shell. @@ -782,6 +819,28 @@ if has('eval') let g:xptemplate_brace_complete = 0 " Only highlight the current placeholder. let g:xptemplate_highlight = 'current' + +" CtrlP settings. + " Don't manage the working directory (the default setting is too slow for + " me). + let g:ctrlp_working_path_mode = 0 + " Path to cache directory. I prefer to keep generated files as local as + " possible. + let g:ctrlp_cache_dir = $HOME . '/.vim/cache/ctrlp' + " Permanent cache, cleared by a crontab entry. + let g:ctrlp_clear_cache_on_exit = 0 + +" FSWitch settings. + " Default don't work well for my projects. + augroup vimrc + autocmd BufEnter *.cc let b:fswitchdst = 'h' + \ | let b:fswitchlocs = './' + autocmd BufEnter *.h let b:fswitchdst = 'cc,c' + \ | let b:fswitchlocs = './' + augroup END + + " Switch to corresponding header/source file. + nnoremap h :FSHere endif @@ -834,6 +893,23 @@ if has('autocmd') autocmd InsertLeave * set ignorecase endif +" Display a warning when editing a file which contains "do not edit" (ignoring +" the case, \c), for example template files which were preprocessed or +" auto-generated files. Especially useful when the header is not displayed on +" the first screen, e.g. when the old position is restored. Not for vimrc +" though. + function! s:SearchForDoNotEditHeader() + if search('\cdo not edit', 'n') == 0 + \ || expand(':t') =~# '^.\?vimrc$' + return + endif + + echohl WarningMsg + echo 'Do not edit this file! (Maybe a template file.)' + echohl None + endfunction + autocmd BufRead * call SearchForDoNotEditHeader() + " AFTER/FTPLUGIN AUTO COMMANDS " Disable spell checking for files which don't need it.