1. 程式人生 > >Vim學習筆記

Vim學習筆記

vim 學習筆記

Notes: ":x":表示在普通模式下輸入:x,所有命令均區分大小寫

vim 初步

使用vim

在命令列鍵入命令即可使用 vim:

vim file.txt

以波紋線 (~) 開頭的行表示該行在檔案中不存在。換句話說,如果 Vim 開啟的檔案不能充滿這個顯示的螢幕,它就會顯示以波紋線開頭的行。

插入文字

Vim 是一個多模式的編輯器。就是說,在不同模式下,編輯器的響應是不同的。在普通模式下,你敲入的字元只是命令;而在插入模式,你敲入的字元就成為插入的文字了。

剛剛進入 Vim 時,它處在普通模式。
通過敲入 "i" 命令 ( i 是插入 (Insert) 的縮寫) 可以啟動插入模式,這樣就可以輸入文字了。
最後,你輸入 <Esc>

鍵退出插入模式而回到普通模式。

要看到你在什麼模式,輸入命令:":set showmode"

無論你在什麼模式,要回到普通模式,只要敲 <Esc> 就可以了。

有時你需要敲兩次,如果 Vim 發出 “嘀” 一聲,就表示你已經在普通模式了。

移動游標

在普通模式下,可以使用兩種方法移動游標:

方法一(通過 hjkl 控制):

  • "h":左
  • "j":下
  • "k":上
  • "l":右

方法二(通過方向鍵控制):

  • "←":左
  • "↓":下
  • "↑":上
  • "→":右

刪除字元

要刪除一個字元,把游標移到它上面然後輸入 "x"。(通過在字元上輸入多個 x 可以刪除多個字元)。

要刪除一整行,使用 "dd"

命令,後一行會移上來填掉留下的空行 。

在 Vim 中你可以把兩行連起來,這意味著刪除兩行間的換行符。游標移動到第一行,按下 "J" 即可。

撤銷與重做

使用 "u" 命令撤銷上一個編輯操作。

如果你輸入 "u" 兩次,你的文字恢復原樣,那應該是你的 Vim 被配置在 Vi 相容模式了。

如果你撤銷得太多,你可以輸入 CTRL-R (redo) 回退前一個命令。換句話說,它撤銷一個撤銷。

使用 "U" 行撤銷命令,撤銷所有在最近編輯的行上的操
作。

其他編輯命令

你需要在文字後插入字元。這通過 "a" (append,附加) 命令實現。

使用 "o" 命令在游標下方建立一個新的空行,並把 Vim 切換到插入模式。

使用 "O" 命令 (大寫) 在游標上方開啟一個新行。

指定計數:通過使用 "5x" 可以達到 "xxxxx" 的效果。

退出

儲存檔案並退出,使用 "ZZ" 命令。

放棄修改並退出,使用 ":q!" 命令 ( : 進入命令模式,! 強制命令修飾符)。

使用 Vim 幫助

獲取一般的幫助,使用 ":help" 或者 <F1> 鍵。指令後也可以跟具體的引數,例如:":help x"

使用 CTRL-] (進入標籤) 和 CTRL-T (或者 CTRL-O 標籤回退) 進行跳轉

游標移動

以詞為單位移動游標

"w" 移動到下一個單詞的詞首,"b" 命令向後移動到前一個詞的詞首。

"e" 命令可以移到下一個單詞的詞末,而 "ge" 則移動到前一個單詞的末尾。

移動到行首或者行尾

"$" 命令把游標移動到當前行行尾。如果你的鍵盤上有 <End> 鍵,也可以完成相同的功能。

"^" 命令把游標移動到一行的第一個非空字元,而 "0" 命令則移到一行的第一個字元,<Home> 鍵也可以完成相同的功能。

移動到指定字元(查詢字元)

"fx" 命令向前查詢本行中的字元 x,"F" 命令用於向左查詢。

"tx" 命令與 "fx" 相似,但它只把游標移動到目標字元的前一個字元上,這個命令的反向版本是 "Tx"

這四個命令可以通過 ";" 命令重複,"," 命令則用於反向重複。無論用哪個命令,游標永遠都不會移出當前行。

放棄查詢,輸入 <Esc>

備註 : <Esc> 可以中止大部分命令,而不僅僅是查詢。

括號跳轉

對於 () [] {} 括號,可以使用 "%" 命令在左右括號之間跳轉。

移動到指定的行

使用 "33G" 可以跳轉到 第33行。

"G" 命令把游標移動到檔案末。移動到檔案首的命令是 "gg" (或者 "1G")。

帶計數字首的 "%" 命令可進行近似跳轉,如 "85%"

對於當前視野區域內的文字而言,"H" 到開頭,"M" 到中央,"L" 到結尾。

確認當前位置

使用 CTRL-G 命令即可。

使用 ":set number" 可以加行號,使用 ":set nonumber" 可以取消。

使用 ":set ruler" 可以在視窗右下角顯示游標位置。

螢幕滾動

CTRL-UCTRL-D 命令可以向上下滾動半屏,CTRL-BCTRL-F 向上下滾動一屏。類似於 PageUpPageDown

每次滾一行的命令是 CTRL-Y (向上) 和 CTRL-E (向下)。

可以使用指令 "zz",可以把游標所在行,移動到螢幕中央。

簡單查詢

查詢命令為 "/String",例如查詢 “include” 需要輸入 "/include"

"?" 命令功能與 "/" 的功能類似,但進行反方向查詢。

查詢下一個匹配可以使用 "n" 命令,查詢前一個匹配使用 "N" 命令。

通過設定 ":set ignorecase" 或者 ":set ignorecase",可以在查詢時忽略大小寫。

注:vim的 : / 等模式,均支援使用 進行歷史命令選取

查詢長單詞 "/TheLongFunctionName" 要輸入很多東西,且容易輸錯。
可以把游標移到那個單詞下面,使用 "*" 命令。Vim 會取得游標上的單詞並把它作為被查詢的字串,"#" 命令在反向完成相同的功能。

使用 \< \> 可以匹配單詞頭尾,例如 "/\<the\>" 將只匹配單詞 the
值得注意的是,"*""#" 命令也使用了 “詞首” 和
“詞尾” 標記來匹配整個單詞 (要部分匹配,使用 "g*""g#")。

通過 ":set hlsearch"":set nohlsearch" 可以啟用或關閉搜尋高亮。
使用 ":nohlsearch",只會臨時關閉高亮,但是不會改變搜尋高亮設定。

通過 ":set incsearch" 可以在輸入字串時就顯示匹配點。

通過 ":set nowrapscan" 可以在查詢到文件結束後停止查詢。

Vim 支援使用正則式匹配查詢。

做小改動

刪除內容

"dw" 可以刪除一個單詞,"d4w" 可以刪除4個單詞,"d$" 刪除當前位置到行尾。

修改文字

"r" 命令不是操作符。它只是等你輸入一個字元然後用這個字元替換當前游標上的字元。

"c",表示修改,change。它的作用方式與 "d" 操作符相似,只是完成後會切換到插入模式。例如,"cw" 刪除一個詞,並切換到插入模式。

"cc" 修改一整行,但它會保留這一行的縮排 (前導空格)。

有些 “操作符-動作” 命令由於經常被使用,所以被設定為單字元命令:

  • "x"" 表示 "dl" (刪除當前游標下的字元)
  • "X" 表示 "dh" (刪除游標左邊的字元)
  • "D" 表示 "d$" (刪除到行尾)
  • "C" 表示 "c$" (修改到行尾)
  • "s" 表示 "cl" (修改一個字元)
  • "S" 表示 "cc" (修改一整行)

重複一個修改

"." 是 Vim 中一個非常簡單而有用的命令,它重複最後一次的修改操作。"." 命令重複任何除 "u" (撤銷),CTRL-R (重做) 和冒號命令外的修改。

可視模式

"v" 命令啟動可視模式。你可以移動游標到需要的地方,中間的文字會被高亮顯示。

如果想對整行做操作,可以使用 "V" 命令來啟動可視模式。左右移動不會有任何效果。而通過上下移動,可以一次選擇多行。

如果你要處理一個矩形塊內的文字,可以使用 CTRL-V 啟動可視模式。

如果你在可視模式下選中了一些文字,又需要改變被選擇的文字的另一端,用 "o" 命令即可 (表示 other end),游標會移動到被選中文字的另一端。
當使用列塊可視模式的時候,你會有四個角,"o" 只是把你移到對角上。而用 "O" 則能移到同一行的另一個角上。

移動文字

當你用 "d""x" 或者其它命令刪除文字的時候,這些文字會被存起來。你可以用 "p" 命令重新粘貼出來 (表示 put,放置)。

"P" 命令像 "p" 一樣也是插入字元,但插入點在游標前面。

拷貝文字

"y" 命令 (抽出 yank) 可以把文字拷貝到暫存器中。然後用 "p" 命令貼上到別處。

使用剪貼簿

需要在命令前加上 "*",例如 "*y""*p"

使用替換模式

"R" 命令啟動替換模式。在這個模式下,你輸入的每個字元都會覆蓋當前游標上的字元。這會一直持續下去,直到你輸入 <Esc>

你可以通過 <Insert> 在插入模式和替換模式間切換。

參考連結: