vim操作彙總

NO IMAGE
不斷更新,方便查閱
撤銷
在vi中按u可以撤銷一次操作
u   撤銷上一步的操作
Ctrl r 恢復上一步被撤銷的操作
如下摘自:http://www.cnblogs.com/chenlogin/p/6245958.html
Vim 是 Linux 系統上的最著名的文字/程式碼編輯器,也是早年的 Vi 編輯器的加強版,而 gVim 則是其 Windows 版。它的最大特色是完全使用鍵盤命令進行編輯,脫離了滑鼠操作雖然使得入門變得困難,但上手之後鍵盤流的各種巧妙組合操作卻能帶來極為大幅的效率提升。因此 Vim 和現代的編輯器(如 Sublime Text)有著非常巨大的差異,而且入門學習曲線陡峭,需要記住很多按鍵組合和命令,如今被看作是高手、Geek們專用的編輯器。儘管 Vim 已經是古董級的軟體,但還是有無數新人迎著困難去學習使用,可見其經典與受歡迎程度。另外,由於 Vim 的可配置性非常強,各種外掛、語法高亮配色方案等多不勝數,無論作為程式碼編輯器或是文稿撰寫工具都非常給力…… 

Vim 有以下幾個模式:

  • 正常(normal)模式,預設的編輯模式;下面如果不加特殊說明,提到的命令都直接在正常模式下輸入;任何其它模式中都可以通過鍵盤上的 Esc 鍵回到正常模式。
  • 命令(command)模式,用於執行較長、較複雜的命令;在正常模式下輸入“:”(一般命令)、“/”(正向搜尋)或“?”(反向搜尋)即可進入該模式;命令模式下的命令要輸入回車鍵(Enter)才算完成。
  • 插入(insert)模式,輸入文字時使用;在正常模式下鍵入“i”(insert)或“a”(append)即可進入插入模式(也有另外一些命令,如“c”,也可以進入插入模式,但這些命令有其它的作用)。
  • 可視(visual)模式,用於選定文字塊;可以在正常模式下輸入“v”(小寫)來按字元選定,輸入“V”(大寫)來按行選定,或輸入“Ctrl-V”來按方塊選定。
  • 選擇(select)模式,與普通的 Windows 編輯器較為接近的選擇文字塊的方式;在以可視模式和選擇模式之一選定文字塊之後,可以使用“Ctrl-G”切換到另一模式——該模式很少在 Linux 上使用

編輯–>輸入:

    i: 在當前游標所在字元的前面,轉為輸入模式;
a: 在當前游標所在字元的後面,轉為輸入模式;
o: 在當前游標所在行的下方,新建一行,並轉為輸入模式;
I:在當前游標所在行的行首,轉換為輸入模式
A:在當前游標所在行的行尾,轉換為輸入模式
O:在當前游標所在行的上方,新建一行,並轉為輸入模式;

輸入–>編輯:

    ESC

編輯–>末行:

    :

末行–>編輯:

ESC, ESC
注:輸入模式和末行模式之間不能直接切換,預設處於編輯模式 

關閉檔案

末行模式關閉檔案

:q  退出
:wq 儲存並退出
:q! 不儲存並退出
:w 儲存
:w! 強行儲存
:wq --> :x

編輯模式下退出

ZZ: 儲存並退出
使用vim編輯多個檔案
複製程式碼
vim FILE1 FILE2 FILE3
:next 切換至下一個檔案
:prev 切換至前一個檔案
:last 切換至最後一個檔案
:first 切換至第一個檔案
:q退出當前檔案
:qa 全部退出
複製程式碼
yy|2yy 複製行
dd|2dd 刪除、剪下行
p貼上到下一行
P貼上到上一行
^|$定位到行首,行尾
dG從當前行刪到文件最後一行
複製程式碼
w 下一個word
W 下一個word(跳過標點符號)
b  前一個word
e  跳到目前word的尾端
0  跳到目前行的開頭
^ 跳到目前行第一個非空白字元
$  跳到行尾
/xxxx  搜尋xxxx
#  往前搜尋目前遊標所在的字(word)
*  往後搜尋目前遊標所在的字(word)
fx  在目前行往後搜尋字元x
gd  跳到目前遊標所在的字(word)的定義位置
:split  分割視窗(可加檔名順便開啟另一檔案)
:diffsplit xxx  以分割視窗和檔案xxx做比較(diff)
Ctrl-W p  跳到前一個分割視窗(在兩個分割窗來回切換)
Ctrl-W j  跳到下面的分割窗
Ctrl-W h  跳到左邊的分割窗
Ctrl-W k  跳到上面的分割窗
Ctrl-W l  跳到右邊的分割窗
複製程式碼

  • 第一部份:一般模式可用的按鈕說明,游標移動、複製貼上、搜尋取代等

移動游標的方法
h 或 向左箭頭鍵(←)游標向左移動一個字元
j 或 向下箭頭鍵(↓)游標向下移動一個字元
k 或 向上箭頭鍵(↑)游標向上移動一個字元
l 或 向右箭頭鍵(→)游標向右移動一個字元
如果你將右手放在鍵盤上的話,你會發現 hjkl 是排列在一起的,因此可以使用這四個按鈕來移動游標。 如果想要進行多次移動的話,例如向下移動 30 行,可以使用 “30j” 或 “30↓” 的組合按鍵, 亦即加上想要進行的次數(數字)後,按下動作即可!
[Ctrl] [f]螢幕『向下』移動一頁,相當於 [Page Down]按鍵 (常用)
[Ctrl] [b]螢幕『向上』移動一頁,相當於 [Page Up] 按鍵 (常用)
[Ctrl] [d]螢幕『向下』移動半頁
[Ctrl] [u]螢幕『向上』移動半頁
游標移動到非空格符的下一列
游標移動到非空格符的上一列
n<space>那個 n 表示『數字』,例如 20 。按下數字後再按空格鍵,游標會向右移動這一行的 n 個字元。例如 20<space> 則游標會向後面移動 20 個字元距離。
0 或功能鍵[Home]這是數字『 0 』:移動到這一行的最前面字元處 (常用)
$ 或功能鍵[End]移動到這一行的最後面字元處(常用)
H游標移動到這個螢幕的最上方那一行的第一個字元
M游標移動到這個螢幕的中央那一行的第一個字元
L游標移動到這個螢幕的最下方那一行的第一個字元
G移動到這個檔案的最後一行(常用)
nGn 為數字。移動到這個檔案的第 n 行。例如 20G 則會移動到這個檔案的第 20 行(可配合 :set nu)
gg移動到這個檔案的第一行,相當於 1G 啊! (常用)
n<Enter>n 為數字。游標向下移動 n 行(常用)
搜尋與取代
/word向游標之下尋找一個名稱為 word 的字串。例如要在檔案內搜尋 vbird 這個字串,就輸入 /vbird 即可! (常用)
?word向游標之上尋找一個字串名稱為 word 的字串。
n這個 n 是英文按鍵。代表『重複前一個搜尋的動作』。舉例來說, 如果剛剛我們執行 /vbird 去向下搜尋 vbird 這個字串,則按下 n 後,會向下繼續搜尋下一個名稱為 vbird 的字串。如果是執行 ?vbird 的話,那麼按下 n 則會向上繼續搜尋名稱為 vbird 的字串!
N這個 N 是英文按鍵。與 n 剛好相反,為『反向』進行前一個搜尋動作。 例如 /vbird 後,按下 N 則表示『向上』搜尋 vbird 。
使用 /word 配合 n 及 N 是非常有幫助的!可以讓你重複的找到一些你搜尋的關鍵詞!
:n1,n2s/word1/word2/gn1 與 n2 為數字。在第 n1 與 n2 行之間尋找 word1 這個字串,並將該字串取代為 word2 !舉例來說,在 100 到 200 行之間搜尋 vbird 並取代為 VBIRD 則:
『:100,200s/vbird/VBIRD/g』。(常用)
:1,$s/word1/word2/g從第一行到最後一行尋找 word1 字串,並將該字串取代為 word2 !(常用)
:1,$s/word1/word2/gc從第一行到最後一行尋找 word1 字串,並將該字串取代為 word2 !且在取代前顯示提示字元給使用者確認 (confirm) 是否需要取代!(常用)
刪除、複製與貼上
x, X在一行字當中,x 為向後刪除一個字元 (相當於 [del] 按鍵), X 為向前刪除一個字元(相當於 [backspace] 亦即是退格鍵) (常用)
nxn 為數字,連續向後刪除 n 個字元。舉例來說,我要連續刪除 10 個字元, 『10x』。
dd刪除遊標所在的那一整列(常用)
nddn 為數字。刪除游標所在的向下 n 列,例如 20dd 則是刪除 20 列 (常用)
d1G刪除游標所在到第一行的所有資料
dG刪除游標所在到最後一行的所有資料
d$刪除遊標所在處,到該行的最後一個字元
d0那個是數字的 0 ,刪除遊標所在處,到該行的最前面一個字元
yy複製遊標所在的那一行(常用)
nyyn 為數字。複製游標所在的向下 n 列,例如 20yy 則是複製 20 列(常用)
y1G複製遊標所在列到第一列的所有資料
yG複製遊標所在列到最後一列的所有資料
y0複製游標所在的那個字元到該行行首的所有資料
y$複製游標所在的那個字元到該行行尾的所有資料
p, Pp 為將已複製的資料在游標下一行貼上,P 則為貼在遊標上一行! 舉例來說,我目前游標在第 20 行,且已經複製了 10 行資料。則按下 p 後, 那 10 行資料會貼在原本的 20 行之後,亦即由 21 行開始貼。但如果是按下 P 呢? 那麼原本的第 20 行會被推到變成 30 行。 (常用)
J將游標所在列與下一列的資料結合成同一列
c重複刪除多個資料,例如向下刪除 10 行,[ 10cj ]
u復原前一個動作。(常用)
[Ctrl] r重做上一個動作。(常用)
這個 u 與 [Ctrl] r 是很常用的指令!一個是復原,另一個則是重做一次~ 利用這兩個功能按鍵,你的編輯,嘿嘿!很快樂的啦!
.不要懷疑!這就是小數點!意思是重複前一個動作的意思。 如果你想要重複刪除、重複貼上等等動作,按下小數點『.』就好了! (常用)


  • 第二部份:一般模式切換到編輯模式的可用的按鈕說明

進入插入或取代的編輯模式
i, I進入插入模式(Insert mode):
i 為『從目前游標所在處插入』, I 為『在目前所在行的第一個非空格符處開始插入』。 (常用)
a, A進入插入模式(Insert mode):
a 為『從目前游標所在的下一個字元處開始插入』, A 為『從游標所在行的最後一個字元處開始插入』。(常用)
o, O進入插入模式(Insert mode):
這是英文字母 o 的大小寫。o 為『在目前游標所在的下一行處插入新的一行』; O 為在目前游標所在處的上一行插入新的一行!(常用)
r, R進入取代模式(Replace mode):
r 只會取代游標所在的那一個字元一次;R會一直取代游標所在的文字,直到按下 ESC 為止;(常用)
上面這些按鍵中,在 vi 畫面的左下角處會出現『–INSERT–』或『–REPLACE–』的字樣。 由名稱就知道該動作了吧!!特別注意的是,我們上面也提過了,你想要在檔案裡面輸入字元時, 一定要在左下角處看到 INSERT 或 REPLACE 才能輸入喔!
[Esc]退出編輯模式,回到一般模式中(常用)


  • 第三部份:一般模式切換到指令列模式的可用的按鈕說明

指令列的儲存、離開等指令
:w將編輯的資料寫入硬碟檔案中(常用)
:w!若檔案屬性為『只讀』時,強制寫入該檔案。不過,到底能不能寫入, 還是跟你對該檔案的檔案許可權有關啊!
:q離開 vi (常用)
:q!若曾修改過檔案,又不想儲存,使用 ! 為強制離開不儲存檔案。
注意一下啊,那個驚歎號 (!) 在 vi 當中,常常具有『強制』的意思~
:wq儲存後離開,若為 :wq! 則為強制儲存後離開 (常用)
ZZ這是大寫的 Z 喔!若檔案沒有更動,則不儲存離開,若檔案已經被更動過,則儲存後離開!
:w [filename]將編輯的資料儲存成另一個檔案(類似另存新檔)
:r [filename]在編輯的資料中,讀入另一個檔案的資料。亦即將 『filename』 這個檔案內容加到遊標所在行後面
:n1,n2 w [filename]將 n1 到 n2 的內容儲存成 filename 這個檔案。
:! command暫時離開 vi 到指令列模式下執行 command 的顯示結果!例如
『:! ls /home』即可在 vi 當中察看 /home 底下以 ls 輸出的檔案資訊!
vim 環境的變更
:set nu顯示行號,設定之後,會在每一行的字首顯示該行的行號
:set nonu與 set nu 相反,為取消行號!

特別注意,在 vi 中,『數字』是很有意義的!數字通常代表重複做幾次的意思! 也有可能是代表去到第幾個什麼什麼的意思。舉例來說,要刪除 50 行,則是用 『50dd』 對吧! 數字加在動作之前~那我要向下移動 20 行呢?那就是『20j』或者是『20↓』即可。

OK!會這些指令就已經很厲害了,因為常用到的指令也只有不到一半!通常 vi 的指令除了上面鳥哥註明的常用的幾個外,其他是不用背的,你可以做一張簡單的指令表在你的螢幕牆上, 一有疑問可以馬上的查詢呦!這也是當初鳥哥使用 vim 的方法啦!

詳見:https://coolshell.cn/articles/5426.html

vim的學習曲線相當的大(參看各種文字編輯器的學習曲線),所以,如果你一開始看到的是一大堆VIM的命令分類,你一定會對這個編輯器失去興趣的。下面的文章翻譯自《Learn Vim Progressively》,我覺得這是給新手最好的VIM的升級教程了,沒有列舉所有的命令,只是列舉了那些最有用的命令。非常不錯。

——————————正文開始——————————

你想以最快的速度學習人類史上最好的文字編輯器VIM嗎?你先得懂得如何在VIM倖存下來,然後一點一點地學習各種戲法。

Vim the Six Billion Dollar editor

Better, Stronger, Faster.

學習 vim 並且其會成為你最後一個使用的文字編輯器。沒有比這個更好的文字編輯器了,非常地難學,但是卻不可思議地好用。

我建議下面這四個步驟:

  1. 存活
  2. 感覺良好
  3. 覺得更好,更強,更快
  4. 使用VIM的超能力

當你走完這篇文章,你會成為一個vim的 superstar。

在開始學習以前,我需要給你一些警告:

  • 學習vim在開始時是痛苦的。
  • 需要時間
  • 需要不斷地練習,就像你學習一個樂器一樣。
  • 不要期望你能在3天內把vim練得比別的編輯器更有效率。
  • 事實上,你需要2周時間的苦練,而不是3天。

第一級 – 存活

  1. 安裝 vim
  2. 啟動 vim
  3. 什麼也別幹!請先閱讀

當你安裝好一個編輯器後,你一定會想在其中輸入點什麼東西,然後看看這個編輯器是什麼樣子。但vim不是這樣的,請按照下面的命令操作:

  • 啟 動Vim後,vim在 Normal 模式下。
  • 讓我們進入 Insert 模式,請按下鍵 i 。(陳皓注:你會看到vim左下角有一個–insert–字樣,表示,你可以以插入的方式輸入了)
  • 此時,你可以輸入文字了,就像你用“記事本”一樣。
  • 如果你想返回 Normal 模式,請按 ESC 鍵。

現在,你知道如何在 Insert 和 Normal 模式下切換了。下面是一些命令,可以讓你在 Normal 模式下倖存下來:

  • i → Insert 模式,按 ESC 回到 Normal 模式.
  • x → 刪當前游標所在的一個字元。
  • :wq → 存檔 退出 (:w 存檔, :q 退出)   (陳皓注::w 後可以跟檔名)
  • dd → 刪除當前行,並把刪除的行存到剪貼簿裡
  • p → 貼上剪貼簿

推薦:

  • hjkl (強例推薦使用其移動游標,但不必需) →你也可以使用游標鍵 (←↓↑→). 注: j 就像下箭頭。
  • :help <command> → 顯示相關命令的幫助。你也可以就輸入 :help 而不跟命令。(陳皓注:退出幫助需要輸入:q)

你能在vim倖存下來只需要上述的那5個命令,你就可以編輯文字了,你一定要把這些命令練成一種下意識的狀態。於是你就可以開始進階到第二級了。

當是,在你進入第二級時,需要再說一下 Normal 模式。在一般的編輯器下,當你需要copy一段文字的時候,你需要使用 Ctrl 鍵,比如:Ctrl-C。也就是說,Ctrl鍵就好像功能鍵一樣,當你按下了功能鍵Ctrl後,C就不在是C了,而且就是一個命令或是一個快鍵鍵了,在VIM的Normal模式下,所有的鍵就是功能鍵了。這個你需要知道。

標記:

  • 下面的文字中,如果是 Ctrl-λ我會寫成 <C-λ>.
  • 以 : 開始的命令你需要輸入 <enter>回車,例如 — 如果我寫成 :q 也就是說你要輸入 :q<enter>.

第二級 – 感覺良好

上面的那些命令只能讓你存活下來,現在是時候學習一些更多的命令了,下面是我的建議:(陳皓注:所有的命令都需要在Normal模式下使用,如果你不知道現在在什麼樣的模式,你就狂按幾次ESC鍵)

  1. 各種插入模式
    • a → 在游標後插入
    • o → 在當前行後插入一個新行
    • O → 在當前行前插入一個新行
    • cw → 替換從游標所在位置後到一個單詞結尾的字元
  2. 簡單的移動游標
    • 0 → 數字零,到行頭
    • ^ → 到本行第一個不是blank字元的位置(所謂blank字元就是空格,tab,換行,回車等)
    • $ → 到本行行尾
    • g_ → 到本行最後一個不是blank字元的位置。
    • /pattern → 搜尋 pattern 的字串(陳皓注:如果搜尋出多個匹配,可按n鍵到下一個)
  3. 拷貝/貼上 (陳皓注:p/P都可以,p是表示在當前位置之後,P表示在當前位置之前)
    • P → 貼上
    • yy → 拷貝當前行當行於 ddP
  4. Undo/Redo
    • u → undo
    • <C-r> → redo
  5. 開啟/儲存/退出/改變檔案(Buffer)
    • :e <path/to/file> → 開啟一個檔案
    • :w → 存檔
    • :saveas <path/to/file> → 另存為 <path/to/file>
    • :x, ZZ 或 :wq → 儲存並退出 (:x 表示僅在需要時儲存,ZZ不需要輸入冒號並回車)
    • :q! → 退出不儲存 :qa! 強行退出所有的正在編輯的檔案,就算別的檔案有更改。
    • :bn 和 :bp → 你可以同時開啟很多檔案,使用這兩個命令來切換下一個或上一個檔案。(陳皓注:我喜歡使用:n到下一個檔案)

花點時間熟悉一下上面的命令,一旦你掌握他們了,你就幾乎可以幹其它編輯器都能幹的事了。但是到現在為止,你還是覺得使用vim還是有點笨拙,不過沒關係,你可以進階到第三級了。

第三級 – 更好,更強,更快

先恭喜你!你乾的很不錯。我們可以開始一些更為有趣的事了。在第三級,我們只談那些和vi可以相容的命令。

更好

下面,讓我們看一下vim是怎麼重複自己的:

  1. . → (小數點) 可以重複上一次的命令
  2. N<command> → 重複某個命令N次

下面是一個示例,找開一個檔案你可以試試下面的命令:

  • 2dd → 刪除2行
  • 3p → 貼上文字3次
  • 100idesu [ESC] → 會寫下 “desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu “
  • . → 重複上一個命令—— 100 “desu “.
  • 3. → 重複 3 次 “desu” (注意:不是 300,你看,VIM多聰明啊).
更強

你要讓你的游標移動更有效率,你一定要了解下面的這些命令,千萬別跳過。

  1. NG → 到第 N 行 (陳皓注:注意命令中的G是大寫的,另我一般使用 : N 到第N行,如 :137 到第137行)
  2. gg → 到第一行。(陳皓注:相當於1G,或 :1)
  3. G → 到最後一行。
  4. 按單詞移動:
    1. w → 到下一個單詞的開頭。
    2. e → 到下一個單詞的結尾。

    > 如果你認為單詞是由預設方式,那麼就用小寫的e和w。預設上來說,一個單詞由字母,數字和下劃線組成(陳皓注:程式變數)

    > 如果你認為單詞是由blank字元分隔符,那麼你需要使用大寫的E和W。(陳皓注:程式語句)

    Word moves example

下面,讓我來說說最強的游標移動:

  • % : 匹配括號移動,包括 ({[. (陳皓注:你需要把游標先移到括號上)
  • * 和 #:  匹配游標當前所在的單詞,移動游標到下一個(或上一個)匹配單詞(*是下一個,#是上一個)

相信我,上面這三個命令對程式設計師來說是相當強大的。

更快

你一定要記住游標的移動,因為很多命令都可以和這些移動游標的命令連動。很多命令都可以如下來幹:

<start position><command><end position>

例如 0y$ 命令意味著:

  • 0 → 先到行頭
  • y → 從這裡開始拷貝
  • $ → 拷貝到本行最後一個字元

你可可以輸入 ye,從當前位置拷貝到本單詞的最後一個字元。

你也可以輸入 y2/foo 來拷貝2個 “foo” 之間的字串。

還有很多時間並不一定你就一定要按y才會拷貝,下面的命令也會被拷貝:

  • d (刪除 )
  • v (視覺化的選擇)
  • gU (變大寫)
  • gu (變小寫)
  • 等等
(陳皓注:視覺化選擇是一個很有意思的命令,你可以先按v,然後移動游標,你就會看到文字被選擇,然後,你可能d,也可y,也可以變大寫等)

第四級 – Vim 超能力

你只需要掌握前面的命令,你就可以很舒服的使用VIM了。但是,現在,我們向你介紹的是VIM殺手級的功能。下面這些功能是我只用vim的原因。

在當前行上移動游標: 0 ^ $ f F t T , ;
  • 0 → 到行頭
  • ^ → 到本行的第一個非blank字元
  • $ → 到行尾
  • g_ → 到本行最後一個不是blank字元的位置。
  • fa → 到下一個為a的字元處,你也可以fs到下一個為s的字元。
  • t, → 到逗號前的第一個字元。逗號可以變成其它字元。
  • 3fa → 在當前行查詢第三個出現的a。
  • F 和 T → 和 f 和 t 一樣,只不過是相反方向。
    Line moves

還有一個很有用的命令是 dt" → 刪除所有的內容,直到遇到雙引號—— "。

區域選擇 <action>a<object> 或 <action>i<object>

在visual 模式下,這些命令很強大,其命令格式為

<action>a<object> 和 <action>i<object>

  • action可以是任何的命令,如 d (刪除), y (拷貝), v (可以視模式選擇)。
  • object 可能是: w 一個單詞, W 一個以空格為分隔的單詞, s 一個句字, p 一個段落。也可以是一個特別的字元:"、 '、 )、 }、 ]。

假設你有一個字串 (map ( ) ("foo")).而游標鍵在第一個 的位置。

  • vi" → 會選擇 foo.
  • va" → 會選擇 "foo".
  • vi) → 會選擇 "foo".
  • va) → 會選擇("foo").
  • v2i) → 會選擇 map ( ) ("foo")
  • v2a) → 會選擇 (map ( ) ("foo"))

Text objects selection

塊操作: <C-v>

塊操作,典型的操作: 0 <C-v> <C-d> I-- [ESC]

  • ^ → 到行頭
  • <C-v> → 開始塊操作
  • <C-d> → 向下移動 (你也可以使用hjkl來移動游標,或是使用%,或是別的)
  • I-- [ESC] → I是插入,插入“--”,按ESC鍵來為每一行生效。

Rectangular blocks

在Windows下的vim,你需要使用 <C-q> 而不是 <C-v> ,<C-v> 是拷貝剪貼簿。

自動提示: <C-n> 和 <C-p>

在 Insert 模式下,你可以輸入一個詞的開頭,然後按 <C-p>或是<C-n>,自動補齊功能就出現了……

Completion

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

示例

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

  • qaYp<C-a>q
    • qa 開始錄製
    • Yp 複製行.
    • <C-a> 增加1.
    • q 停止錄製.
  • @a → 在1下面寫下 2
  • @@ → 在2 正面寫下3
  • 現在做 [email protected]@ 會建立新的100行,並把資料增加到 103.

Macros

視覺化選擇: v,V,<C-v>

前面,我們看到了 <C-v>的示例 (在Windows下應該是<C-q>),我們可以使用 v 和 V。一但被選好了,你可以做下面的事:

  • J → 把所有的行連線起來(變成一行)
  • < 或 > → 左右縮排
  • = → 自動給縮排 (陳皓注:這個功能相當強大,我太喜歡了)

Autoindent

在所有被選擇的行後加上點東西:

  • <C-v>
  • 選中相關的行 (可使用 j 或 <C-d> 或是 /pattern 或是 % 等……)
  • $ 到行最後
  • A, 輸入字串,按 ESC。

Append to many lines

分屏: :split 和 vsplit.

下面是主要的命令,你可以使用VIM的幫助 :help split. 你可以參考本站以前的一篇文章VIM分屏

  • :split → 建立分屏 (:vsplit建立垂直分屏)
  • <C-w><dir> : dir就是方向,可以是 hjkl 或是 ←↓↑→ 中的一個,其用來切換分屏。
  • <C-w>_ (或 <C-w>|) : 最大化尺寸 (<C-w>| 垂直分屏)
  • <C-w>  (或 <C-w>-) : 增加尺寸

Split

結束語

  • 上面是作者最常用的90%的命令。
  • 我建議你每天都學1到2個新的命令。
  • 在兩到三週後,你會感到vim的強大的。
  • 有時候,學習VIM就像是在死背一些東西。
  • 幸運的是,vim有很多很不錯的工具和優秀的文件。
  • 執行vimtutor直到你熟悉了那些基本命令。
  • 其線上幫助文件中你應該要仔細閱讀的是 :help usr_02.txt.
  • 你會學習到諸如  !, 目錄,暫存器,外掛等很多其它的功能。

學習vim就像學彈鋼琴一樣,一旦學會,受益無窮。

——————————正文結束——————————

對於vi/vim只是點評一點:這是一個你不需要使用滑鼠,不需使用小鍵盤,只需要使用大鍵盤就可以完成很多複雜功能文字編輯的編輯器。不然,Visual Studio也不就會有vim的外掛了