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-U
和 CTRL-D
命令可以向上下滾動半屏,CTRL-B
和 CTRL-F
向上下滾動一屏。類似於 PageUp
和 PageDown
。
每次滾一行的命令是 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>
在插入模式和替換模式間切換。