Vim技巧之重複

來源:互聯網
上載者:User

標籤:vim   linux   重複   宏   

  • Vim技巧之重複
  • Vim重複的類型
  • 文本改變重複
  • 行內尋找重複
  • 全文尋找重複
  • 文本重複替換
  • 宏錄製重複

Vim技巧之重複

當我們用vim編輯文本的時候,不免會進行一些重複的操作,當我們想要重複上次的操作,難道還要重複一遍相同的操作嗎?這樣不免會浪費時間。於是vim就將你上次進行的一些操作記錄在vim的寄存器裡,當你想要重複上次進行的操作的時候,直接點擊快速鍵就可以了。

Vim重複的類型

vim中有五種基本的重複類型,分別是:

重複類型 重複操作符 後援動作符
文本改變重複 . u
行內尋找重複 ; ,
全文尋找重複 n N
文本替換重複 & u
宏重複 @[寄存器] u

下面我們來見詳細介紹這幾種重複操作

文本改變重複

通過 : h .來查看vim的協助手冊:

. Repeat last change, with count replaced with [count]. Also repeat a yank command, when the ‘y’ flag is included in ‘cpoptions’. Does not repeat a command-line command.

可見.操作就是用來重複上一次更改的

舉幾個栗子:

example1:
x操作來刪除一個字元,接著用.重複刪除字元

example2:
dd刪除一行資料,然後用.重複刪除一行資料

example3:
yy複製一行資料,p進行粘貼,點擊.來重複粘貼操作

行內尋找重複

有時候我們想要在當前行內尋找一個字元,我們可以通過f{char}/t{char}來從當前位置開始到行尾進行尋找,也可以通過F{char}/T{char}從當前位置開始到行首進行尋找。簡單的說就是小寫向後找,大寫向前找。

通過 : h ;來查看vim的協助手冊:

  • ; Repeat latest f, t, F or T [count] times. See cpo-;

  • , Repeat latest f, t, F or T in opposite direction [count] times. See also cpo-;

可見我們可以用;來重複vim尋找的操作,,重複反向找的操作

舉幾個栗子:

example1:
在檔案main.cc的31行裡面首先用f:來尋找:字元,之後用;來重複尋找操作

example2:
我們將前文講到的更改操作重複和行內尋找操作重複結合在一起,在檔案main.cc的31行裡面首先用f+:來尋找:字元,然後cl:字元替換為+字元,之後重複的鍵入;.來將剩下的:替換為+

全文尋找重複

通過:h /來查看vim的協助手冊:

  • /{pattern}[/]<CR> Search forward for the [count]’th occurrence of {pattern} exclusive.
  • ?{pattern}[?]<CR> Search backward for the [count]’th previous occurrence of {pattern} exclusive.

vim裡面通過/pattern<CR>來從當前位置開始在全文中向下尋找匹配項,或者?pattern<CR>來從當前位置開始在全文中向上尋找匹配項

通過:h n來查看vim的協助手冊:

  • n Repeat the latest “/” or “?” [count] times. last-pattern {Vi: no count}
  • N Repeat the latest “/” or “?” [count] times in opposite direction. last-pattern {Vi: no count}

在尋找完畢以後,我們可以用n跳轉到下一個匹配項,N跳轉到上一個匹配項

舉個栗子:
main.cc裡面尋找suite,並用gUaw將單詞轉為大寫,之後重複n.操作將全部轉為大寫

文本重複替換

通過:h &來查看vim的協助手冊:

& Synonym for :s (repeat last substitute). Note that the flags are not remembered, thus it might actually work differently. You can use :&& to keep the flags.

一般來說,我們可以採用這樣的形式:s/target/replacement/g來將行內出現的字串target替換為另外一個字串replacement,要是我們想在其他行執行相同的替換工作,可以用&來重複替換操作

舉個栗子:
main.cc檔案31行內的::字串採用下面的形式替換為+-+:s/::/+-+/g,之後用重複j&操作替換下面的兩行

宏錄製重複

通過:h @來查看vim的協助手冊:

@{0-9a-z".=*+} Execute the contents of register {0-9a-z”.=*+} [count] times. Note that register ‘%’ (name of the current file) and ‘#’ (name of the alternate file) cannot be used.

vim裡面宏錄製是一個非常NB的功能,你可以錄製一系列的操作到寄存器裡面,之後直接@{寄存器}就可以重複之前錄製的一系列操作

vim裡面可以用q{寄存器}開始進行錄製,之後用q來結束錄製,寄存器的名字a-z中的任意一個,比如qa就是將動作記錄到寄存器a中,之後如果想要使用該宏,使用@a就可以重複錄製的操作

舉幾個栗子:

example1:將當前行的::替換為+-+,然後刪除行尾的號,並將文本向右縮排一行

example2:在內容為this is number1進行複製,然後粘貼到下一行,並將數字1增加為2,內容變為this is number2,以此重複十次,所以最後一行的內容應為this is number12

這裡用到了vim裡面的一個冷知識,那就是Ctrl+a,該操作會從游標開始,向後尋找離游標最近的數字,如果找到就將數位值加1,同理Ctrl+x就是將數字減1,於是我們錄製了這樣的一個宏操作qa,yy,p,ctrl+a,q,然後[email protected]將這個宏重複十次就成了上面的效果啦

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.