Move my cursor

Cursor movement in most editors (ed users can stop now) is a fundamental operation. In Vim (and old vi) cursor movement commands can be used in combination with other commands.

Most users know that dd deletes a line, but many do not know that it is actually a simplified form of the d command that deletes whatever you define with a cursor movement operation. I’ll explain with examples:

  • l (and the right-arrow key) moves one character right, so dl deletes the character under the cursor (since the cursor position is actually the left hand edge of the visible cursor), but x also deletes to same character, so use that instead;
  • w moves to the start of the next word, so dw deletes to the start of the next word;
  • ^ moves to the start of the line, so d^ deletes to the start of the line;
  • $ moves to the end of the line, so d$ deletes to the end of the line, but D also deletes to the end of the line, so use that instead;
  • G moves to the end of the file, so dG deletes to the end of the file;
  • { and } move back and forward paragraphs, so d{ deletes a paragraph backwards and d} deletes a paragraph forwards;
  • t moves forward (within a line) until it finds a character you specify, so tp will move forward until it finds a p (it won’t move if there is no p), so dtp will delete up to the p;
  • ' moves to the start of the line containing the mark you specify (you do know how to make marks, don’t you?) and ` moves to the actual mark position, so d'a will delete to the start of the line you marked with a and d`o will delete to the o mark;

There are too many other cursor movement commands for me to show, and there are many other commands that can use them. Of these, my next 2 favourites are y and =. y is the copy equivalent to the cut of d, and I’m assuming you know that p is paste. = is the smart indent command.

Published
Categorized as Uncategorized Tagged