X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=vimrc;h=c5941692bd497a23e9e04338ce3272c1c8ba0148;hb=1fbfa10398fe6d78c97b1ab12d7f8ac9ff9ff50f;hp=48f52f335e1deec75a45c1219ae38d4df5978cbd;hpb=0c40bebfe732f379daa3826b8be1acf90bb33052;p=config%2Fdotfiles.git diff --git a/vimrc b/vimrc index 48f52f3..c594169 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 @@ -91,8 +105,11 @@ if exists('+cryptmethod') set cryptmethod=blowfish endif +" Create new split windows on the right (and not left). +set splitright + " 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! @@ -123,6 +140,15 @@ if has('eval') endif +" TERMINAL SETTINGS + +" Also enable fast terminal mode in GNU screen and tmux, but not for SSH +" connections. +if &term =~# '^screen' && !exists('$SSH_CONNECTION') + set ttyfast +endif + + " EDIT SETTINGS " Enable automatic file detection, plugin and indention support. @@ -175,7 +201,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 +214,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 +233,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 +385,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 +554,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 +613,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 +774,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 +831,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 +905,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.