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
Now, when you're creating a new *.pl-file it is automatically prepended with the contents of ~/.vim/skeletons/skeleton.pl and vim starts at the end of the file. Needless to say, that you can use multiple autocmd commands to support languages other than Perl.
-
-
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.
Enough for one day....