vim 編輯器
初學(xué) vi/vim,應(yīng)該通過學(xué)習(xí)附屬 vim 安裝的 vimtutor (或 vimtutor zh)來對 vim 各方面有個初步的了解坷虑。
以下節(jié)選可在較多環(huán)境下使用的功能伺绽,應(yīng)該根據(jù)自己的需求做相應(yīng)的整理养泡。
Vim 的幾種模式
普通模式:可以使用操作符、快捷鍵命令憔恳。在其它模式下按 ESC 可以返回普通模式瓤荔。
底部命令模式:可在普通模式下按冒號(:)進(jìn)入,以執(zhí)行命令或臨時配置 vim钥组。
替換模式:在普通模式下输硝,按 R 等進(jìn)入。
插入模式:在普通模式下程梦,按 i 等進(jìn)入点把。
可視模式:在普通模式下,按 v 等進(jìn)入屿附,以區(qū)塊高亮選擇文本郎逃。
普通模式(Normal mode)
光標(biāo)定位或操作符作用域
h,j挺份,k褒翰,l 左、下、上优训、右移朵你。
{[ home | 0 | ^ ] | [ end | $ ]} 行首/行尾;
{ gg | G } 首行/末行揣非;
{ w | W } 右移一個單詞/字符串位抡医,光標(biāo)停在首字符;
{ e | E } 右移一個單詞/字符串位早敬,光標(biāo)停在尾字符忌傻;
{ b | B } 左移一個單詞/字符串位,光標(biāo)停在首字符搞监;
{ f|tchar } 移動到當(dāng)前行 char 字符位/前水孩,再輸入分號 ; 以移動到下一個匹配位。
{ F|Tchar } 同上腺逛,只是反向荷愕。
{ H | M | L } 移動到屏幕頁首/頁中/頁尾。
[ nG | ngg ] 移動到第 n 行棍矛。
注:可在以上作用域前指定數(shù)字倍數(shù)安疗,但改變、剪切和復(fù)制操作符必須在最前面够委。
操作符 數(shù)字倍數(shù) 作用域 (字段間沒有空格)
ctrl + G 顯示光標(biāo)所在位置及文件狀態(tài)荐类。
可視模式(Visual mode):
普通模式按 v 進(jìn)入可視模式, 高亮選取文本。
按 V茁帽,高亮按行選取玉罐。
按 ctrl + v,高亮按塊選取潘拨。
文本塊
{aw | as | ap } 一個詞/一句/一段
{ab | ib | aB | iB} 小括號塊/不含括號/花括號塊/不含括號吊输。
可視模式 [數(shù)字倍數(shù) 作用域] | [文本塊] 操作符 (字段間沒有空格)
v motion :w filename 保存所選行到指定文件。
插入模式(Insert mode)
i | I | a | A 在光標(biāo)處/行首/光標(biāo)后/行尾插入铁追。
o | O 在下/上一行插入季蚂。
操作符(Operator)
改變/剪切/復(fù)制/粘貼:
c、d琅束、y 分別為改變扭屁、剪切和復(fù)制操作符。
操作符 [數(shù)字倍數(shù) 作用域] | [文本塊](字段間沒有空格)
{ p | P } 粘貼到所在行下/上涩禀。
{ yy | [ dd | D ]} 復(fù)制/刪除(剪切)所在行料滥。
[n]dd 刪除(剪切)n 行。
替換模式(Replace mode)
r 替換光標(biāo)處的字符艾船,同樣支持漢字葵腹。
R 進(jìn)入替換模式高每,按 esc 回到普通模式。
撤消與重做(Undo and redo)
U 取消在當(dāng)前行中所作的所有改動礁蔗。
[n]u 取消 一/n 個改動觉义。
:undo 5 撤銷 5 個改變。
:undolist 你的撤銷歷史浴井。
. 重復(fù)
ctrl + r 反撤銷。
:earlier 6m 回到6分鐘前霉撵。
:later 19s 前進(jìn)19秒磺浙。
底部命令模式(Command at bottom mode)
匹配搜索
/keyword 向后查找 keyword, n 下一個徒坡; N 前一個撕氧。
?keyword 向前查找 keyword, n 下一個喇完; N 前一個伦泥。
% 光標(biāo)停在單個任意括號字符下,按 % 查找配對的括號锦溪。
{ * | # } 在任何單詞下按 */# 號不脯,則向后/前查找此單詞。
匹配替換
:s/old/new 在當(dāng)前行用 new 替換第一個 old刻诊。
:s/old/new/g 在當(dāng)前行用 new 替換所有的 old防楷。
:n1,n2s/old/new/g 在 n1 和 n2 用 new 替換所有的 old。
:%s/old/new/g 用 new 替換文件中所有的 old则涯。
:%s/old/new/gc 同上复局,但每次替換都提示確認(rèn)。
:%s/^/#/g 在每一行的行首插入 #粟判,^ 表示行首亿昏。
:%s/$/66/g 在每一行的行尾插入 66,$ 表示行尾档礁。
綜合命令
:! command 執(zhí)行 Linux 命令角钩。
:m,nw !cmd 將文件的 m 行到 n 行之間的內(nèi)容做為命令輸入執(zhí)行命令。
:m,nd 剪切 m 行到 n 行的內(nèi)容事秀。
:r filename 在光標(biāo)位置下插入指定文件的內(nèi)容彤断。
:r !command 在光標(biāo)位置下插入命令的輸出。
:e [filename]| :e! [filename] 重新載入文件/強(qiáng)制重新載入易迹。
:pwd 顯示 vim 當(dāng)前工作目錄宰衙。
:cd path 改變 vim 工作目錄。
文檔保存/退出
{:w | :w filename} 保存/按指定文件名保存睹欲。
{:q | :q!} 退出/強(qiáng)行退出供炼。
{:wq | :wq!} 保存并退出/強(qiáng)行退出一屋。
常用設(shè)置:
:{set nu[mber] | set nonu[mber]} 開啟/關(guān)閉顯示行號。
:{set hlsearch | set nohlsearch} 開啟/關(guān)閉高亮搜索袋哼。
:{syntax on | syntax off} 開啟/關(guān)閉語法高亮冀墨。
:{set list | set nolist} 開啟/關(guān)閉顯示非打印字符。
:{set si | set nosi} 開啟/關(guān)閉智能縮進(jìn)涛贯。
:{set ai | set noai} 開啟/關(guān)閉自動對齊诽嘉。
:{set ic | noic} 開啟/關(guān)閉忽略大小寫。
:set autochdir 根據(jù)所編輯文件的位置自動切換 vim 工作目錄弟翘。
多窗口
:sp[lit] file - 在新緩存中打開指定文件并分割窗口虫腋。
:vs[plit] file - 在新緩存中打開指定文件并垂直分割窗口。
Ctrl + ws - 水平分割窗口稀余。
Ctrl + wv - 垂直分割窗口悦冀。
Ctrl + ww - 切換窗口。
Ctrl + wq - 退出窗口睛琳。
Ctrl + wx - 與下一個窗口切換位置盒蟆。
Ctrl + w= - 讓所有窗口的高和寬相等。
寄存器(Register)
用寄存器來保存或調(diào)用寄存器中的內(nèi)容來應(yīng)用剪切师骗、復(fù)制或粘貼历等。
:reg 顯示所有寄存器的內(nèi)容。
a-z 為有名寄存器
"a-z 在剪切丧凤、復(fù)制或粘貼前都可以使用 a-z 有名寄存器募闲。
"A-Z 用大寫字母 A-Z 表示在相應(yīng)的寄存器中追加內(nèi)容。
"" 默認(rèn)寄存器愿待,每次使用 c浩螺,d,y仍侥,p 的內(nèi)容要出。
0-9 為無名寄存器。
"0 保存最新復(fù)制的內(nèi)容农渊。
"1-9 c患蹂,d,y砸紊,p 操作記錄序列传于。
".,"%醉顽,":沼溜,"# 只讀寄存器。
". 最后插入的文本游添。
"% 當(dāng)前文件名系草。
": 最近執(zhí)行的命令通熄。
"# 替代的文件名。
其它寄存器
"- 最近小于一行的刪除找都。
"/ 最近的搜索匹配唇辨。
"= 最近的表達(dá)式擴(kuò)展。
"_ 黑洞寄存器能耻,使用此寄存器的內(nèi)容將不會被記錄赏枚。
"* 系統(tǒng)剪貼版(X11 primary)。
"+ 系統(tǒng)剪貼板(X11)晓猛。
排版
基本排版
<< 向左縮進(jìn)一個 shiftwidth
>> 向右縮進(jìn)一個 shiftwidth
:ce(nter) 本行文字居中
:le(ft) 本行文字靠左
:ri(ght) 本行文字靠右
gq 對選中的文字重排嗡贺,即對過長的文字進(jìn)行斷行
gqq 重排當(dāng)前行
gqnq 重排 n 行
gqap 重排當(dāng)前段
gqnap 重排n段
gqnj 重排當(dāng)前行和下面 n 行
gqQ 重排當(dāng)前段對文章末尾
J 拼接當(dāng)前行和下一行
gJ 同 J,不過合并后不留空格鞍帝。
拼寫檢查
:set spell 開啟拼寫檢查功能。
:set nospell 關(guān)閉拼寫檢查功能煞茫。
]s 移到下一個拼寫錯誤的單詞帕涌。
[s 反向。
z= 顯示一個有關(guān)拼寫錯誤單詞的列表续徽。
zg 指示拼寫檢查器該單詞拼寫正確蚓曼。
zw 指示拼寫檢查器該單詞拼寫錯誤。
自動補全:
在輸入模式下輸入部分字符然后輸入
ctrl + x 和 ctrl + n 用正在編輯的文件的內(nèi)容作為關(guān)鍵字補齊钦扭。
ctrl + x 和 ctrl + f 以當(dāng)前目錄內(nèi)的文件名作為關(guān)鍵字補齊纫版。
ctrl + x 和 ctrl + o 以擴(kuò)展名作為語法填充,以 vim 內(nèi)建的關(guān)鍵詞補
齊客情。(必須要寫對文件擴(kuò)展名其弊,比如 .html, .php 等等)