Vim基礎使用技巧

魯鵬發表於2014-07-06

前提

在Linux系統上操作檔案,避免不了要使用vim編輯器,傳說中的編輯器之神。

我感到非常的慚愧,很長一段時間,我總是覺得使用vim的時候是那麼的力不從心,甚至覺得哪有傳說中的那麼神奇?那是因為我從來沒有完整學習過vim,甚至是沒有完整看過一遍:help,總覺得一個編輯器有這個必要嗎?

平常只是使用vim修改個配置檔案什麼的,知道h|j|k|l還有io等插入不就行了嘛,直到最近,編寫了一些程式碼才發現,vim不應該這麼難用,怎麼可能想修改一個字元,要先x刪掉,然後i插入,最後esc退出,我覺得肯定有更快捷的方法,不然怎麼配上叫“編輯器之神”的稱號。

在這裡沒有高階的使用方法,沒有各種牛X外掛的介紹,這是非常基礎的常用使用技巧,我只是將這些常用的使用技巧做了一個簡單地總結,如果其中有一條技巧幫助到了你,那麼我就會覺得非常欣慰了。

1、移動

知道h|j|k|l是"左下上右"是遠遠不夠的,還要知道下面這些字元,熟練使用他們會大大提升編輯效率。

  • w 當前游標位置直到下一個單詞起始處,不包括第一字元
  • e 當前游標位置直到單詞末尾,包括最後一個字元
  • $ 前游標位置直到行尾,包括當前游標位置
  • 0 當前游標位置直到行首,不包括當前游標位置。注:這是數字0
  • G 直接跳到檔案最後一行
  • gg 直接跳到檔案第一行
  • #G 跳到指定的行號數,#代表行號,比如12G直接跳到12行處

    顯示行號請使用設定命令:set nu

一定要注意上面解釋的用語

  • 直到:它是一個範圍,從游標處到下一個游標處的一個範圍
  • 包括不包括:可以這麼說,移動的路徑中是否包括某個位置,為什麼這麼咬文嚼字,不就是移到下一個單詞處或是哪一行嘛,接著往下看,你就會知道原因。

2、刪除

可能被瞭解最多的就是dd命令了吧,它是指刪除一行,要刪除多行的話,就要加上數字number dd,比如2dd刪除兩行(包括當前行),如果你想刪除一段程式中的一個函式,不知道你會不會先去數一數或是計算一下這個函式有多少行?我就這樣幹過好長時間。其實它的本質就是d刪除指令,下面看一下刪除指令d的基本格式。

d number motion
  • number 代表數字
  • motion 代表移動

多說也解釋不清楚,下面看例項,當然最好是準備一個文件跟著我一塊練習。

  • d2w number為2,motionw,代表刪除兩個單詞,這裡自己練習一下,就會體會到上面說的移動範圍以及包括不包括的意思。
  • d$ 沒有numbermotion$,代表直接刪到行尾,包括當前游標位置。
  • d5G 沒有numbermotion5G,刪除當前行到第5行之間的內容,包括第5行。
  • dG 沒有numbermotionGG代表什麼?代表跳到最後一行對不對,那麼dG呢?對了,刪掉當前行到最後一行內容,包括最後一行。
  • dgg 這個不用解釋了吧,呵呵

上面只是舉了幾個特殊的例子,現在你可以大膽的去拿d命令和移動命令組合了,當你明白了其中的道理,你會發現,何必要用2dd去刪除兩行呢,使用dj不是更快嘛。你甚至可以通過ggdG來刪除全文,所以千萬不要去嘗試去記住所有的命令,你要記住的只是幾個字母而已,哈

3、更改

更改的命令是c,道理完全同刪除命令d一樣,格式用法都是一樣的,不一樣的是,c命令會從正常模組直接進入編輯模式。

  • cw 修改一個單詞,這裡同ce效果一樣,結合上面的內容,自己體會一下為什麼。
  • c$ 更改從當前游標到行末,還有c0c2w等等命令就不再介紹了,到這裡相信你也理解了,而無需我再重複介紹了。

在這裡你就會發現,xi命令貌似和cl命令一個意思,都是刪掉一個字元,然後進入編輯模式進行替換。我覺得還是挺麻煩的,僅僅為了修改一個字元,就要進入編輯模式,改完了還得esc退出編輯模式,這麼做vim都覺得委屈。

還是接著學習吧......

4、字元替換

替換命令,也許你都想到了是什麼,刪除是d,更改是c,替換當然是r啦,哈哈,對了,就是r,看到沒有,大神們就是怕你記不住,根本不用你去記。

好了,穿越到上面的問題去,我現在就想修改一個字元,有沒有更快的方法,別讓我來回esc了,比如就想將vaid中的a改成o,那麼你可以將游標停在字母a上,然後按下替換命令r,接著輸入字母o就行了,整個過程完全不用切到編輯模式,而直接替換了字元。

r只是替換一個字元,如果你輸入R就可以一直在替換模式,直到按下esc退出為止。

5、複製貼上

複製命令是y,格式同dc一樣,在其後加入移動命令就可以複製指定內容了。下面也只是簡單兩個例子。

  • y2w 複製兩個單詞
  • ggyG 複製全文,先用gg命令跳到首行,然後yG,從首行復制到最後一行,就複製全文了。

d命令類似,yy代表複製當前行,2yy代表複製兩行,既然複製完了,如何貼上呢?

使用命令p就行了,其實p命令的本質是將vim的暫存器中的內容貼上出來,這樣一講,你就會明白,剪下該怎麼做,剪下不就是刪了再貼上出來嗎,使用d命令就可以了,其實vim會把刪除的內容存到暫存器中,然後你通過p命令貼上,就達到了剪下的目的。

大寫Pp的區別只是一個是粘到前面,一個粘到後面而已。

6、搜尋匹配

搜尋單詞hello,在正常模式下輸入:/hello就行了,n向下搜尋,N向前搜尋。

想忽略大小寫進行搜尋,輸入設定命令:set ic就可以了。

7、匹配替換

匹配替換就是word裡面的替換功能,如果全篇的void都寫成了vaid,總不能一個一個修改吧,於是就有了匹配替換功能。

  • :s/old/new/g 將所在行的old替換成new
  • :%s/old/new/g 整個檔案範圍內進行替換
  • :%s/old/new/gc 找到每個匹配串,並對每個匹配串提示是否進行替換
  • :#,#s/old/new/g 在若干行範圍類進行替換,#代表行號

8、撤銷與重做

這裡我只想提上一句,撤銷命令是u,也就是undo;重做命令為ctrl-r,好了,知道這些夠用了。

9、檔案

還有一些關於檔案操作的小技巧,就總結到下面了

  • :#,# w filename 選擇性儲存,如:13,14 w filename將檔案中13行,14行另存到filename檔案中
  • :r filename 插入外部文件,將filename檔案內容插入到游標所在下方

10、插入命令

為什麼把最基礎的命令留到了最後,因為前面的內容實在太精彩了。

  • i&I 游標前插入 & 游標所在行行首插入
  • a&A 游標後插入 & 游標所在行行尾插入
  • o&O 下一行插入 & 上一行插入

結束語

好了,基本上,你現在可以熟練操作vim編輯器了,你會發現肯定比普通編輯器要厲害多了,但是要想達到IDE的效果,那你還得繼續努力,學習vim更為強大的命令以及外掛。

最後推薦一本書吧-《Vim實用技巧》
Vim實用技巧

相關文章