Vim 教程

你想以最快的方式教自己 vim(人類已知的最好的文字編輯器)。以下這是我的方式,你從學習最小技能開始,然後慢慢整合所有技巧。

學習vim,它將是你的最後一個文字編輯器。我所知道的沒有比它更好的文字編輯器。它很難學,但使用起來卻令人難以置信。

我建議你用 4 個步驟自學 Vim:

  1. 生存
  2. 感覺舒服
  3. 感覺更好,更強,更快
  4. 使用 vim 的超能力

到這個旅程結束時,你將成為一個超級巨星。

但在我們開始之前,先給一個警告。學習 vim 起初會很痛苦。需要花時間。這很像演奏樂器,不要期望在不到 3 天的時間內使用 vim 比使用其他編輯器更高效。事實上它肯定需要 2 周而不是 3 天。

第 1 級 - 生存

  1. 安裝vim
  2. 啟動 vim
  3. 沒做什麼!讀。

在標準編輯器中,在鍵盤上鍵入足以編寫內容並在螢幕上看到它。這次不行。Vim 處於普通模式。我們進入插入模式。輸入字母 i

你應該感覺好一點。你可以在標準編輯器中鍵入字母。要返回普通模式,只需 ESC 按鍵即可。

你現在知道如何在插入普通模式之間切換。現在,以下是在普通模式下生存所需的命令:

  • i插入模式。鍵入 ESC 以返回正常模式。
  • x →刪除游標下的字元
  • :wq→儲存並退出(:w 儲存,:q 退出)
  • dd →刪除(並複製)當前行
  • p →貼上

推薦的:

  • hjkl(強烈推薦但不是強制性的)→基本游標移動(←↓↑→)。提示:j 看起來像向下箭頭。
  • :help <command>→顯示幫助 <command>。你可以在 :help 沒有 a 的情況下使用 <command> 獲得一般幫助。

只有 5 個命令。這就是你開始所需要的一切。一旦這些命令開始變得自然(可能在一天左右之後),你應該繼續前進到第 2 級。

但首先,說一下關於普通模式的一點評論。在標準編輯器中,要複製,你必須使用Ctrl鍵(通常是Ctrl+C)。事實上,當你按下Ctrl時,就好像所有的鍵都改變了意義。在正常模式下使用 vim 有點像讓編輯器自動按下Ctrl你的鍵。

關於符號的最後一句話:

  • 我不寫 Ctrl-λ,二十寫 <C-λ>
  • 命令以 : 開,以 <enter> 結尾。例如,當我寫 :q 時,我的意思是 :q<enter>

第 2 級 - 感覺舒服

你知道生存所需的命令。是時候學習更多命令了。這些是我的建議:

1. 插入模式變化:

  • a →在游標後插入
  • o →在當前行之後插入一個新行
  • O →在當前行之前插入新行
  • cw →將游標替換為單詞的結尾

2. 基本動作

  • 0 →轉到第一列
  • ^ →轉到該行的第一個非空白字元
  • $ →到最後一行
  • g_ →轉到行的最後一個非空白字元
  • /pattern →搜尋 pattern

3. 複製/貼上

  • P→貼上之前,記住 p 是在當前位置後貼上。
  • yy →複製當前行,更容易但相當於 ddP

4. 撤銷/重做

  • u →撤消
  • <C-r> →重做

5. 載入/儲存/退出/更改檔案(緩衝區)

  • :e <path/to/file> →開啟
  • :w →儲存
  • :saveas <path/to/file> →儲存到 <path/to/file>
  • :xZZ:wq→儲存並退出(:x 僅在必要時儲存)
  • :q!→退出而不儲存,還::qa! 即使存在已修改的隱藏緩衝區也要退出。
  • :bn(分別 :bp)→顯示下一個(相應的前一個)檔案(緩衝區)

花點時間學習所有這些命令。完成後,你應該能夠完成其他編輯器中可以執行的所有操作。你可能仍覺得有點尷尬不是那麼舒服。但請跟我到下一級,你會明白為什麼 vim 值得去學習,去做更多的工作。

第三級 - 更好、更強、更快

祝賀你走到這一步!現在我們可以從有趣的東西開始。在第 3 級,我們只討論與舊的 vi 編輯器相容的命令。

更好

讓我們來看看 vim 如何幫助你重複自己:

  1. . →(點)將重複最後一個命令,
  2. N →將重複命令 N 次。

一些例子,開啟一個檔案並輸入:

  • 2dd →將刪除 2 行
  • 3p →將文字貼上 3 次
  • 100ilove [ESC] →會寫“love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love love“
  • . →剛過最後一個命令將再次寫入 100 次 love
  • 3. →會寫 3 次 love (而不是 300,多麼聰明)。

更強

知道如何用 vim 有效地移動是非常重要的。不要跳過本節。

  1. N G→轉到第 N 行

  2. gg→快捷方式 1G-轉到檔案的開始

  3. G →轉到最後一行

  4. 單詞移動:

    1. w →轉到下一個單詞的開頭,
    2. e →轉到這個詞的結尾。

    預設情況下,單詞由字母和下劃線字元組成。我們將一個由空白字元分隔的字母組稱為 WORD。如果你想考慮 WORDS,那麼只需使用大寫字元:

    1. W →轉到以下 WORD 的開頭,
    2. E →到這個詞的結尾。

    Word 移動的例子

現在讓我們談談非常有效的舉措:

  • %:轉到相應的 ({[
  • *(resp。#):轉到游標下單詞的下一個(相應的前一個)出現

相信我,最後三個命令是黃金。

更快

還記得 vi 移動的重要性嗎?這就是原因。大多數命令可以使用以下通用格式:

<start position><command><end position>

例如:0y$ 手段

  • 0 →轉到此行的開頭
  • y →從這裡猛拉
  • $ →直到這一行的結尾

我們也可以做這樣的事情 ye,從這裡開始到結尾。但也是 y2/foo 第二次出現 foo

但是 y(yank)的真實情況也適用於 d(刪除),v(視覺選擇),gU(大寫),gu(小寫)等…

第 4 級 - Vim 超能力

使用所有前面的命令,你應該習慣使用 vim。但現在,這裡有殺手級的功能。其中一些功能是我開始使用 vim 的原因。

移動當前行: 0 ^ ### g_ f F t T , ;`

  • 0 →轉到第 0 列

  • ^ →轉到第一個字元

  • $ →轉到最後一欄

  • g_ →轉到該行的最後一個字元

  • fa→轉到下一次出現的字母 a,(相應 ;)將找到下一個(相應的前一個)發生。

  • t,→轉到角色前面 ,

  • 3fa→找到 a 此行的第 3 次出現。

  • FT→像 ft 但是向後移動

    行移動

一個有用的提示是:dt"→刪除所有內容,直到 "

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

這些命令只能在操作模式處於可視模式後使用。但它們非常強大。他們的主要模式是:

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

動作可以是任何動作,例如 d(刪除),y(拷貝),v(在可視模式下選擇)。物件可以是:w 單詞,WWORD(擴充套件單詞),s 句子,p 段落。而且,自然字元也可以,比如 "')}]

假設游標在第一個 o(map (+) ("foo"))

  • vi"→將選擇 foo
  • va"→將選擇 foo
  • vi)→將選擇 foo
  • va)→將選擇 ("foo")
  • v2i) →將選擇 map (+) ("foo")
  • v2a) →將選擇 (map (+) ("foo"))

文字物件選擇

選擇矩形塊:<C-v>

矩形塊對於註釋許多程式碼行非常有用。典型例子如 0<C-v><C-d>I-- [ESC]

  • ^ →轉到該行的第一個非空白字元
  • <C-v> →開始塊選擇
  • <C-d>→向下移動(也可能是 jjj%,等…)
  • I-- [ESC]→寫下 -- 評論每一行

矩形塊

注意:在 Windows 中,你可能必須使用 <C-q> 而不是 <C-v> 假如剪貼簿不為空的話。

完成:<C-n><C-p>

在插入模式下,只需鍵入單詞的開頭,然後輸入 <C-p>,魔力就會顯現…

完成

巨集:qa 做一些事情 q@a@@

qa記錄 a 中記錄你的行為。然後 @a 將重放儲存到暫存器中的巨集 a,就像你鍵入它一樣。@@ 是重放上次執行的巨集的快捷方式。

在僅包含數字 1 的行上,鍵入以下內容:

  • qaYp<C-a>q
    

    • qa 開始記錄。
    • Yp 複製這一行。
    • <C-a> 增加數量。
    • q 停止記錄
  • @a →在 1 下寫 2

  • @@ →在 2 下寫 3

  • 現在,100@@ 將建立一個遞增數字直到 103 的列表。

巨集

視覺選擇:vV<C-v>

我們看到了一個例子 <C-v>。還有 vV。選擇完成後,你可以:

  • J →將所有行連線在一起。
  • <(或 >)→向左縮排(或向右縮排)。
  • = →自動縮排

自動縮排

在所有視覺選擇的行的末尾新增一些內容:

  • <C-v>
  • 去到想要的行(jjj<C-d>/pattern% 等…)
  • $ 到行的末尾
  • A,寫文字,ESC

附加到許多行

拆分::splitvsplit

這些是最重要的命令,但你應該看一下 :help split

  • :split→建立拆分(:vsplit 建立垂直拆分)
  • <C-w><dir>:其中 dir 是任何 hjkl 或←↓↑→改變分裂。
  • <C-w>_(分別 <C-w>|):最大化分割的大小(分別為垂直分割)
  • <C-w>+(分別 <C-w>-):成長(分別縮小)分裂

分割

結論

這是我每天使用的命令中的 90%。我建議你每天學習不超過一兩個新命令。兩到三週後,你會開始感受到 vim 的力量在你手中。

學習 Vim 更多的是訓練而不是簡單的記憶。幸運的是,vim 帶有一些非常好的工具和優秀的文件。執行 vimtutor 直到你熟悉大多數基本命令。

然後,你將瞭解 !,摺疊,註冊,外掛和許多其他功能。像學習鋼琴一樣學習 vim,一切都應該沒問題。