X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=vimrc;h=fb56e0cf08f2f61314aa5881e37e4bbbfb07d60d;hb=d103b2a72ed0152303f381ab91ea7b2a3721591b;hp=2f6a20ada65813716b7101570315bda597e4b5d9;hpb=0491e759328448a035d81ef9bc3c581833c9a7d8;p=config%2Fdotfiles.git diff --git a/vimrc b/vimrc index 2f6a20a..fb56e0c 100644 --- a/vimrc +++ b/vimrc @@ -388,7 +388,7 @@ if has('statusline') endif endfunction - " Display unexpected 'fileformat' and 'fileencoding' settings. + " Display unexpected 'fileformat', 'fileencoding' and 'bomb' settings. function! s:StatuslineFileFormat() if &fileformat != 'unix' return '[' . &fileformat . ']' @@ -404,6 +404,13 @@ if has('statusline') return '' endif endfunction + function! s:StatuslineFileBOMB() + if exists('+bomb') && &bomb + return '[BOM]' + else + return '' + endif + endfunction " Return current syntax group in brackets or nothing if there's none. function! s:StatuslineSyntaxGroup() @@ -428,6 +435,9 @@ if has('statusline') function! SFE() return s:StatuslineFileEncoding() endfunction + function! SFB() + return s:StatuslineFileBOMB() + endfunction function! SSG() return s:StatuslineSyntaxGroup() endfunction @@ -452,6 +462,7 @@ if has('statusline') set statusline+=%#Error# " display warnings set statusline+=%{SFF()} " - unexpected file format set statusline+=%{SFE()} " - unexpected file encoding + set statusline+=%{SFB()} " - unexpected file byte order mask set statusline+=%## " continue with normal colors endif @@ -472,13 +483,16 @@ endif " modified by a plugin or other settings. Except for which isn't " affected by mappings. -" Easy way to exit insert mode. jk is preferred because it's faster. -inoremap jj +" Easy way to exit insert mode (jj is too slow). inoremap jk " Also for command mode, thanks to http://github.com/mitechie/pyvim " (2010-10-15). -cnoremap jj cnoremap jk +" And fix my typos ... +inoremap JK +inoremap Jk +cnoremap JK +cnoremap Jk " Disable arrow keys for all modes except command modes. Thanks to James Vega " (http://git.jamessan.com/?p=etc/vim.git;a=summary). @@ -529,6 +543,10 @@ if has('eval') \ :call TemporaryNostartofline("C-U>") endif +" Let Y yank to the end of the line, similar to D and C. Use yy if you want to +" yank a line. This fixes a weird inconsistency in Vi(m). +nnoremap Y y$ + " Write before suspending, thanks to deryni in #vim on Freenode (2011-05-09 " 20:02 CEST). To suspend without saving either unmap this or use :stop. " Only the current buffer is written, thus switching to another buffer works @@ -588,6 +606,19 @@ nnoremap 8 :8buffer nnoremap 9 :9buffer nnoremap 0 :10buffer +" Use real tabs instead of soft tabs. +if has('eval') +" Switch from soft tabs to real tabs. + function! s:UseTabs() + setlocal noexpandtab shiftwidth=8 softtabstop=8 + endfunction + nnoremap t :call UseTabs() +endif +" Enable "verbatim" mode. Used to view files with long lines or without syntax +" coloring. +nnoremap v :set nolist nowrap nospell synmaxcol=0 + \ :2match + " Make last active window the only window. Similar to o. nnoremap O po @@ -604,11 +635,6 @@ else nmap sd endif -" Add semicolon to the end of the line. Thanks to -" http://www.van-laarhoven.org/vim/.vimrc for this idea and godlygeek in #vim -" on Freenode for an improved version which doesn't clobber any marks. -nnoremap ; :call setline(line('.'), getline('.') . ';') - if has('eval') " * and # for selections in visual mode. Thanks to " http://got-ravings.blogspot.com/2008/07/vim-pr0n-visual-search-mappings.html @@ -889,6 +915,7 @@ if has('eval') " 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' @@ -896,6 +923,10 @@ if has('eval') " cache manually. let g:ctrlp_clear_cache_on_exit = 0 + " Don't switch the window if the selected buffer is already open. I want + " to open another view on this buffer in most cases. + let g:ctrlp_switch_buffer = 0 + " FSWitch settings. " Defaults don't work well for my projects. augroup vimrc @@ -907,6 +938,10 @@ if has('eval') " Switch to corresponding header/source file. nnoremap h :FSHere + +" netrw settings. + " Don't create ~/.vim/.netrwhist history file. + let g:netrw_dirhistmax = 0 endif @@ -961,13 +996,18 @@ if has('autocmd') 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. +" the case) and similar messages in the first lines of the file, 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. function! s:SearchForDoNotEditHeader() - if search('\cdo not edit', 'n') == 0 - \ || expand(':t') =~# '^.\?vimrc$' + " Only search the first 20 lines to prevent false positives, e.g. + " in scripts which write files containing this warning and ignore + " the case (\c). (Can't use search()'s {stopline} as we might not + " start searching from the top.) + let l:search = '\c\(do not \(edit\|modify\)\|autogenerated by\)' + let l:match = search(l:search, 'n') + if l:match == 0 || l:match > 20 return endif @@ -990,6 +1030,10 @@ if has('autocmd') " the recommendation for git commit messages (http://tpope.net/node/106). autocmd FileType gitcommit let g:secure_modelines_allowed_items = [] | \ setlocal textwidth=72 +" Fix 'include' setting for shell files to recognize '.' and 'source' +" commands. Use &l:include instead of setlocal which requires excessive +" escaping of \. + autocmd FileType sh let &l:include = '^\s*\(\.\|source\)\s\+' " Use the same comment string as for Vim files in Vimperator files. autocmd FileType vimperator setlocal commentstring=\"%s " Use TeX compiler for (La)TeX files.