Thursday, July 9, 2009

vi, Still Relevant

I thought this was a good summary of why vi (or more accurately vim) is still a good choice for editing today:

Why, oh WHY, do those #?@! nutheads use vi?

One trick I learned from this article that I hadn't known: keep the cursor on the same line, but position that line at the top, middle, or bottom of the script via 'zt', 'zz', and 'zb' respectively. I am always ending up with the cursor at the bottom of the screen while runnning macros, and I want to look ahead to the next N lines, but all the other movement commands like Ctrl-d, H/M/L, etc. actually move the cursor. zt is a fast way to tell how many more times you'll want to run the same macro, for macros that process the current line and then move down one.

4 comments:

Brian Tkatch said...

The oly thing i learnt about vi was ":q!". Then back to emacs. Luckily, i don't run into vi too often.

The power of a good editor is important to those who know how to use it. Be it vi, emacs, or whichever editor you prefer.

Laurent Schneider said...

As I do not use a clone of vi, your tricks with zt and zb are useless for me...

vi is the best editor in Unix why should I care installing vim?

What I do hate in vi :

Line too long and Terminal too wide error messages!

John Russell said...

Laurent: As I do not use a clone of vi...

There are many Linux systems where I don't intend to use a clone of vi, but still vim is hooked into the vi command. Maybe that's just Oracle's typical setup. I don't like some of the default behaviour on those systems -- colours on by default, live highlighting of search matches -- but it is fairly easy to put vim back into "visually matches vi" or "strict vi compatibility" modes from what I can tell.

When I'm using OS X terminal windows, full-screen on 24-inch monitor, vim doesn't complain about the width. I do experience odd cursor-off-by-1-line errors with some combinations of ssh clients and Linux systems, both with vi and vim.

John Russell said...

Laurent: vi is the best editor in Unix why should I care installing vim?

Record and playback of keystrokes as macros. I often prefer this technique to automate search/replace/delete/rearrange operations over a series of files, even over a 'perl -e ...' one-liner.