Vi and Vim Macro Tutorial: How To Record and Play

来源:互联网 发布:java模拟 qq加好友 编辑:程序博客网 时间:2024/05/16 06:59

Vi and Vim Macro Tutorial: How To Record and Play


Using Vim Macro feature you can record and play a sequence of actions inside the editor.

This article explains how to perform record and play inside Vi and Vim editor using two detailed examples.

High Level Steps to Record and Play inside Vim

  1. Start recording by pressing q, followed by a lower case character to name the macro
  2. Perform any typical editing, actions inside Vim editor, which will be recorded
  3. Stop recording by pressing q
  4. Play the recorded macro by pressing @ followed by the macro name
  5. To repeat macros multiple times, press : NN @ macro name. NN is a number

Example 1: Sequence number generation inside a file using Vim Macro

1. Start a sequence-test.txt file to generate the sequence.

$ vim sequence-test.txt

2. Go to insert mode and type “1 .” as shown below

Type: Esc i followed by 1.

$ vim sequence-test.txt1.

3. Start the Recording and store it in register a.

Type: Esc q followed by a

  • q indicates to start the recording
  • a indicates to store the recordings in register a
  • When you do q a, it will display “recording” at the bottom of the vi.

4. Copy the 1st line to 2nd line to have two lines with 1 . as shown below

Type: Esc yy followed by p

  • yy will copy the current line
  • p will paste the line that was just copied
$ vim sequence-test.txt1.1.

Note: Vim will still show recording at the bottom as shown below.

Vim Recording Message
Fig: Vim showing recording message at the bottom

5. Increment the number.

Type: Control a

By placing the cursor at the 2nd line, press Ctrl+a which increment the number to 2. as shown below.

$ vim sequence-test.txt1.2.

Note: vim will still show recording at the bottom.

6. Stop the recording

Type: q

Press q to stop the recording. You’ll notice that recording message at the bottom of the vim is now gone.

7. Repeat the recording 98 times.

Type: 98@a

  • Now repeat this job, by typing 98 @ a
  • @a repeats the macro “a” one time.
  • 98@a repeats the macros “a” 98 times generating the sequence number 1 – 100 as shown below using macros.
Vim Macro Record and Play
Fig: Generate Sequence Number in Vim using Macro

Example 2: Repeat Vim Macro with different arguments

This example explains how you can executing the same command, with different input for it. i.e Framing the same command, with different arguments.

Before Executing the Macro: change-password.sql

$ vim change-password.sqlAnnetteWarrenAnthonyPrestonKellyTaylorStillerDennisSchwartz

After Recording and executing the Macro: change-password.sql

$ vim change-password.sqlALTER USER Annette IDENTIFIED BY 'Annette';ALTER USER Warren IDENTIFIED BY 'Warren';ALTER USER Anthony IDENTIFIED BY 'Anthony ';ALTER USER Preston IDENTIFIED BY 'Preston';ALTER USER Kelly IDENTIFIED BY 'Kelly ';ALTER USER Taylor IDENTIFIED BY 'Taylor';ALTER USER Stiller IDENTIFIED BY 'Stiller';ALTER USER Dennis IDENTIFIED BY 'Dennis';ALTER USER Schwart IDENTIFIED BY 'Schwart';

1. Open the change-password.sql that has only the names.

$ vim change-password.sqlAnnetteWarrenAnthonyPrestonKellyTaylorStillerDennisSchwartz

2. Start the Recording and store it in register a

Type: q a

  • q indicates to start the recording
  • a indicates to store the recordings in register a
  • When you do q a, it will display the message recording at the bottom of the vi.

3. Go to Insert Mode and Type ALTER USER

Type: I (Upper case i) followed by “ALTER USER ”

Place the cursor anywhere in the first line, and then press I. Which will take you to the first character of the line. Type ALTER USER

4. Copy the Next Word (i.e the name)

Type: Esc w yw

  • Press Esc, and then press w to go to the next word ( name ).
  • yw, copies the current word ( name ).

5.Go to the end and type IDENTIFIED BY ‘

Type: Esc A followed by ” IDENTIFIED BY ‘”

  • Press Esc, and A to move the cursor to the end of the line, and then type space.
  • Type IDENTIFIED BY ‘

6. Paste the copied Name

Type: Esc p

Press Esc, and then type p to paste the name that was copied in the step #4.

7. Complete the quote at the end.

Type: Esc A followed by ‘;

Press Esc, and A to go to the end of the line, and ‘;

8. Jump to the next line and stop the record.

Type: Esc j followed by q

  • j to move to the next line.
  • q to stop the recording

Note: The recording message shown in the bottom of the vi will now disappear. At this stage, the change-password.sql will look like the following.

Vim Macro Recording
Fig: Vim Macro completed the recording

9. Repete the Macro with the arguments in the corresponding line

Type: 8 @ a

  • Now repeat this job 8 times by typing 8@a
  • @a repeats the macro “a” one time.
  • 8@a repeats the macros “a” 8 times completing the rest of the line automatically as shown below
Vim Macro Play Recording
Fig: Vim Macro Play completed

Recommended Reading

<img class="frame alignright size-full title=" vim="" 101="" hacks="" ebook"="" src="http://static.thegeekstuff.com/images/vim-101-hacks-132.png" style="margin: 0px 0px 26px 26px; padding: 13px; word-wrap: break-word; border: 1px solid rgb(221, 221, 221); max-width: 100%; height: auto; display: block; float: right; background-color: rgb(238, 238, 238);">Vim 101 Hacks, by Ramesh Natarajan. I’m a command-line junkie. So, naturally I’m a huge fan of Vi and Vim editors. Several years back, when I wrote lot of C code on Linux, I used to read all available Vim editor tips and tricks. Based on my Vim editor experience, I’ve written Vim 101 Hacks eBook that contains 101 practical examples on various advanced Vim features that will make you fast and productive in the Vim editor. Even if you’ve been using Vi and Vim Editors for several years and have not read this book, please do yourself a favor and read this book. You’ll be amazed with the capabilities of Vim editor.

Awesome Vim Editor Articles

Following are few awesome Vi / Vim editor tutorials that you might find helpful.

  • Turbocharge Firefox Browser With Vim Editor Functionality Using Vimperator Add-on
  • Tutorial: Make Vim as Your C/C++ IDE Using c.vim Plugin
  • Convert Vim Editor to Beautiful Source Code Browser for Any Programming Language
  • 12 Powerful Find and Replace Examples for Vim Editor

Note: Please subscribe to The Geek Stuff and don’t miss any future Vi and Vim editor tips and tricks.

If you enjoyed this article, you might also like..
  1. 50 Linux Sysadmin Tutorials
  2. 50 Most Frequently Used Linux Commands (With Examples)
  3. Top 25 Best Linux Performance Monitoring and Debugging Tools
  4. Mommy, I found it! – 15 Practical Linux Find Command Examples
  5. Linux 101 Hacks 2nd Edition eBook 
  • Awk Introduction – 7 Awk Print Examples
  • Advanced Sed Substitution Examples
  • 8 Essential Vim Editor Navigation Fundamentals
  • 25 Most Frequently Used Linux IPTables Rules Examples
  • Turbocharge PuTTY with 12 Powerful Add-Ons

from: 
http://www.thegeekstuff.com/2009/01/vi-and-vim-macro-tutorial-how-to-record-and-play/
0 0
原创粉丝点击