vim 經常使用命令

  •   Insert 模式,按 ESC 回到 Normal 模式.html

  • x → 刪當前光標所在的一個字符。程序員

  • :wq → 存盤 + 退出 (:w 存盤, :q 退出)   (陳皓注::w 後能夠跟文件名)web

  • dd → 刪除當前行,並把刪除的行存到剪貼板裏shell

  • p → 粘貼剪貼板vim

推薦:ide

  • hjkl (強例推薦使用其移動光標,但沒必要需) →你也能夠使用光標鍵 (←↓↑→). 注: j 就像下箭頭。spa

  • :help <command> → 顯示相關命令的幫助。你也能夠就輸入 :help 而不跟命令。(陳皓注:退出幫助須要輸入:q).net

  1. 各類插入模式
    code

    • a → 在光標後插入orm

    • 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是怎麼重複本身的:

    • . → (小數點) 能夠重複上一次的命令

    • 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多聰明啊).

    • 更強
    • 你要讓你的光標移動更有效率,你必定要了解下面的這些命令,千萬別跳過

    • NG → 到第 N 行 (陳皓注:注意命令中的G是大寫的,另我通常使用 : N 到第N行,如 :137 到第137行)

    • gg → 到第一行。(陳皓注:至關於1G,或 :1)

    • G → 到最後一行。

    • 按單詞移動:

      > 若是你認爲單詞是由默認方式,那麼就用小寫的e和w。默認上來講,一個單詞由字母,數字和下劃線組成(陳皓注:程序變量)

      > 若是你認爲單詞是由blank字符分隔符,那麼你須要使用大寫的E和W。(陳皓注:程序語句)

      Word moves example

      • w → 到下一個單詞的開頭。

      • e → 到下一個單詞的結尾。

    • 下面,讓我來講說最強的光標移動:

      • % : 匹配括號移動,包括 (, {, [. (陳皓注:你須要把光標先移到括號上)

      • * 和 #:  匹配光標當前所在的單詞,移動光標到下一個(或上一個)匹配單詞(*是下一個,#是上一個)

    • 相信我,上面這三個命令對程序員來講是至關強大的。

    • 更快
    • 你必定要記住光標的移動,由於不少命令均可以和這些移動光標的命令連動。不少命令均可以以下來幹:

    • <start position><command><end position>

    • 例如 0y$ 命令意味着:

    • 0 → 先到行頭

    • y → 從這裏開始拷貝

    • $ → 拷貝到本行最後一個字符

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

    • 你也能夠輸入 y2/foo 來拷貝2個 「foo」 之間的字符串。

    • 還有不少時間並不必定你就必定要按y纔會拷貝,下面的命令也會被拷貝:

    • d (刪除 )

    • v (可視化的選擇)

    • gU (變大寫)

    • gu (變小寫)

    在當前行上移動光標: 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

    • 如今作 100@@ 會建立新的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

相關文章
相關標籤/搜索