]> ruderich.org/simon Gitweb - config/dotfiles.git/blobdiff - vimrc
setup.sh: add missing newline
[config/dotfiles.git] / vimrc
diff --git a/vimrc b/vimrc
index d0c490c2f187fc4cda6220a30161fdce94203599..fb56e0cf08f2f61314aa5881e37e4bbbfb07d60d 100644 (file)
--- a/vimrc
+++ b/vimrc
@@ -483,13 +483,16 @@ endif
 " modified by a plugin or other settings. Except for <Nop> which isn't
 " affected by mappings.
 
-" Easy way to exit insert mode. jk is preferred because it's faster.
-inoremap jj <Esc>
+" Easy way to exit insert mode (jj is too slow).
 inoremap jk <Esc>
 " Also for command mode, thanks to http://github.com/mitechie/pyvim
 " (2010-10-15).
-cnoremap jj <C-C>
 cnoremap jk <C-C>
+" And fix my typos ...
+inoremap JK <Esc>
+inoremap Jk <Esc>
+cnoremap JK <C-C>
+cnoremap Jk <C-C>
 
 " Disable arrow keys for all modes except command modes. Thanks to James Vega
 " (http://git.jamessan.com/?p=etc/vim.git;a=summary).
@@ -540,6 +543,10 @@ if has('eval')
         \ :call <SID>TemporaryNostartofline("<Bslash><Lt>C-U>")<CR>
 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<CR>.
 " Only the current buffer is written, thus switching to another buffer works
@@ -599,6 +606,19 @@ nnoremap <silent> <Leader>8 :8buffer<CR>
 nnoremap <silent> <Leader>9 :9buffer<CR>
 nnoremap <silent> <Leader>0 :10buffer<CR>
 
+" 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 <silent> <Leader>t :call <SID>UseTabs()<CR>
+endif
+" Enable "verbatim" mode. Used to view files with long lines or without syntax
+" coloring.
+nnoremap <silent> <Leader>v :set nolist nowrap nospell synmaxcol=0<CR>
+                          \ :2match<CR>
+
 " Make last active window the only window. Similar to <C-W> o.
 nnoremap <C-W>O <C-W>p<C-W>o
 
@@ -615,11 +635,6 @@ else
     nmap <Leader>sd <Nop>
 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 <silent> <Leader>; :call setline(line('.'), getline('.') . ';')<CR>
-
 if has('eval')
 " * and # for selections in visual mode. Thanks to
 " http://got-ravings.blogspot.com/2008/07/vim-pr0n-visual-search-mappings.html
@@ -981,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('<afile>: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
 
@@ -1010,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.