August 2010 Archives
2010-08-18 15:53:02
Vim tips
Almost 4PM...time for some vim tips. :-)
- autocmd
Vim's powerful autocmd feature can be used to automatically perform certain commands when a specific event occurs. The events that can be used as triggers range from creating a new file to resizing vim's window. A complete list of available triggers can be obtained by typing :help autocmd-events in vim. So, how's this useful?
Let's say you write most of your Perl scripts in vim, why should you insert the shebang and some other stuff manually in a new file, when the editor can do this for you? The following two steps show you how it's done:- Create a new file ~/.vim/skeletons/skeleton.pl containing a
shebang for Perl as well as the recommended use strict/warnings
statements:
p=$(which perl); mkdir -p ~/.vim/skeletons; cat << EOF > ~/.vim/skeletons/skeleton.pl #!$p use strict; use warnings; EOF
- Put the following in your ~/.vimrc
autocmd BufNewFile *.pl 0r ~/.vim/skeletons/skeleton.pl | :normal G
- Create a new file ~/.vim/skeletons/skeleton.pl containing a
shebang for Perl as well as the recommended use strict/warnings
statements:
- Syntax check
Everyone knows about vim's :make command, but did you know that it's possible to set the make program for each file type separately?autocmd FileType perl set makeprg=perl\ -c\ %\ $*
By adding this to your ~/.vimrc, :make will no longer invoke make file but perl -c file instead, when you're editing a Perl script. As usual, Perl is just an example - i.e. Ruby programmers might use ruby -c or the like. - Y?
There's some inconsistency between deleting and yanking in vim:
dd deletes the current line, D deletes from the cursor to the end of the line.
yy yanks the current line, but Y also yanks the current line...
To yank all characters from the cursor position to the end of the line, you either need to type y$, or add a custom mapping for Y to your ~/.vimrc:map Y y$
- Matchit
- Typing % in normal mode finds the next item in the current line or under the cursor and jumps to its match. Items include c-style comments, parenthesis and some preprocessor statements. Unfortunately, there's no native support for HTML or Latex, but there's a handy little plugin, that adds support for these and many other languages: Matchit.