Quantcast
Channel: tail -f /dev/null
Viewing all articles
Browse latest Browse all 10

Simple Vim Macros

$
0
0

I found myself editing a configuration file (multiple actually) at work today and ran into an issue.  The config file looked similar to:

Var_1=A
Var_2=B
Var_3=C
...
Var_146=ABC
Var_147=ABD

As it happened I needed to remove one of the lines at position 23.  The program that reads/uses these config files has an issue if there is a break in the sequence.  So after removing the line with “Var_23″ I needed to shift all of the numbers in following lines down by 1.  Here is how I accomplished that.

In vim I put my cursor on the 24 in the line that now follows the “Var_22″ line and performed the following commands:

qa
CTRL-X
j
q
125@a

Here is what happened broken down by line:

1: Here I am recording a macro (q) with the name or identifier of ‘a’.  Note you will probably see some indication in the last line that you are in “recording” mode.

2: CTRL-X decrements the number under the cursor.  Since I am on the 24 that decrements it to 23.

3:  I move down 1 line and now the cursor is on the 25 in the next line.

4: I quit recording the macro.  I know have a named (a) macro that includes the commands “decrement the number under the cursor and move down one row”.

5: I perform that named (a) macro 125 times.  Now realistically I only needed to do it 123 times.  It didn’t seem to matter that I used 125 but YMMV.  The first line after the last line I wanted to change was a blank line so I assume the macro quit when the CTRL-X failed.  You are probably better off using the exact number.

And there you have it.  I successfully renumbered all of the variables below the line I deleted to be in sequence.


Viewing all articles
Browse latest Browse all 10

Trending Articles