Wednesday, March 21, 2007

Copy, paste, and cut text block in VI

Copy block in vi:
Mark Beginning of Block : mx set mark x (x may be any letter)
Mark End of Block and "Copy'' : y`x yank from here to mark x into buffer
Mark End of Block and "Cut'' : d`x delete from here to mark x into bufferFor the whole file try:

Goto to line one: 1G
Sort from current line to end of file: !Gsort<cr>
Or if you want to think of it as one command: 1G!Gsort<cr>

Sort a range:
Move Cursor to last line to sort
mark the line with mark 'a': ma
move cursor to first line to sort
sort from current line to mark 'a': !'asort<cr>

Now what does the special chars above mean.

'!' is the vi filter command, it is followed by a movement command
that says what is being filtered. That is followed by the actual
filter cmd. The filter cmd can be any executable. In this case sort.
Since vi does not know how long the filter command name is, you have
to hit carriage return to initiate the filter.

G by itself means go to the end of the file

ma means set mark a to this line. (marks a-z exist)

'a means goto mark a.

No comments: