vim宏錄製

來源:互聯網
上載者:User

    看陳皓大哥的部落格(http://coolshell.cn/),學習VIM,宏錄製的神奇在我腦海中揮之不去,不禁感歎VIM的強大。

樣本如下:

宏錄製:  qa 操作序列  q@a@@
  • qa 把你的操作記錄在寄存器 a。
  • 於是 @a 會replay被錄製的宏。
  • @@ 是一個快速鍵用來replay最新錄製的宏。

樣本

在一個只有一行且這一行只有“1”的文本中,鍵入如下命令:

  • qaYp<C-a>q

    • qa 開始錄製
    • Yp 複製行.
    • <C-a> 增加1.
    • q 停止錄製.
  • @a → 在1下面寫下 2
  • @@ → 在2 正面寫下3
  • 現在做 100@@ 會建立新的100行,並把資料增加到 103.
所有這幾個命令裡面,唯獨不理解Ctrl + a 是什麼意思,雖然可以很容易的猜到,我還是google了一下,原來在VIM中Ctrl + a 和Ctrl + x也是有作用的啊,就是將數字+1、-1。於是我模仿上面的宏錄製,來實現一個{1, 3, 5, 7, 9, 11 ……}這樣的資料列表。1.輸入1, (1,“,”號,“ ”空格——為了編碼規範)2.輸入qa( 開始錄製)3.yyp(複製當前行,粘貼到下一行)4.2,Ctrl + a (先輸入2,再按下Ctrl + a)5.q (按q結束錄製)6.N@@(該命令用以replay宏, N,代表要重複幾次)7.選中剛剛產生的資料,按J(將所有行串連成一行)下面這些資訊轉載自:http://www.cnblogs.com/ini_always/archive/2011/09/21/2184446.html    講的是可以將宏錄製到不同的寄存器中,qa(中的a是指a號寄存器,也可以是b,c神馬的,而使用的時候也是制定寄存器5@a,5@@是指使用最近錄製的宏)

在編輯某個檔案的時候,可能會出現需要對某種特定的操作進行許多次的情況,以編輯下面的檔案為例:

;=====================================================================================;This is a sample configuration file when upgrading XXX using InstallShield.;Author:        ini_always;Date:          8/24/2011;Last modified: 9/20/2011;Note: Install script does NOT verify whether the configuration file is in a "WELL";format, a WRONG format may lead to installation failure.;If more information is needed, please check the document for details.;=====================================================================================
複製代碼

這是一個ini類型的設定檔,可以看到每一行的最前面有一個逗號,現在如果需要將每行前面的逗號去掉,怎麼辦?在第一行行首按x,然後按j,然後按x...這樣重複下去?確實,我最開始也是這樣的,但如果這個檔案有100行要這樣修改呢?或者1000行?

好吧,少廢話,進入正題。所謂宏,在vim裡面是指某種特定順序的一系列操作,我們可以錄製自己的操作序列,然後重複這個序列多次,以簡化某種重複的操作。vim宏有錄製和播放的過程,錄製就是你教給vim該怎麼操作,播放就是vim照著你教的進行自動操作。因此,對於上面的檔案處理,首先要進行宏錄製:

1.把游標定位在第一行;

2.在normal模式下輸入qa(當然也可以輸入qb, qc, etc,這裡的a, b, c是指寄存器名稱,vim會把錄製好的宏放在這個寄存器中)(PS:如果不知道什麼是vim的寄存器,請自行放狗搜之);

3.正常情況下,vim的命令列會顯示“開始錄製”的字樣,這時候,把游標定位到第一個字元(按0或者|),再按x刪除,按j跳到下一行;

4.normal模式下輸入q,結束宏錄製。

好了,經過以上步驟,我們定義了一個儲存在寄存器a中的宏,它的操作序列是:0->x->j,也就是跳到行首,刪除,跳到下一行。

現在,第一行已經刪除了行首的逗號,而且游標也已經在第二行,現在,在normal模式下輸入@a,以播放我們剛錄製好的存在寄存器a中的宏。於是,第二行行首的逗號也被刪除,游標停在了第三行。

這也不簡單啊?你肯定會這樣想,要刪除100行,我還得輸入100個@a,我還不如手動刪除呢。呵呵,vim早就想到了,輸入7@a,好了,剩下的7行全部搞定了。(PS:在命令前面加數字,就是代表要執行這個命令多少次)

當然,這個例子很簡單,但也很典型。利用好vim的宏,可以使一些原本很無聊的工作要簡單很多


宏錄製太強大了,可以為我們完成很多重複性的勞動,此文有待補充

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.