(一)Vim模式
- vim的三種工作模式:命令模式(Command Mode) 、輸入模式(Input Mode)、末行模式(Last line Mode)
- 切換的方法:
- 命令模式下輸入 a、i、o進(jìn)入輸入模式
- 輸入模式下按 Esc 進(jìn)入命令模式
- 命令模式下輸入 : 進(jìn)入末行模式
- 末行模式下指令錯(cuò)誤則返回命令模式
- 簡(jiǎn)寫記憶:
- 輸入-->命令:Esc
- 命令-->輸入:a i o A I O
- 以下所有命令都是在命令模式下
(二)常用Vim命令
-
這個(gè)圖涵蓋了常用的Vim命令
-
插入文本
-
I—— 在當(dāng)前行第一個(gè)非空字符前插入 -
gI—— 在當(dāng)前行第一列插入 -
a—— 在光標(biāo)后插入 -
A—— 在當(dāng)前行最后插入 -
o—— 在下面新建一行插入 -
O—— 在上面新建一行插入
-
-
文檔操作
:w—— 保存修改:wq—— 保存并退出ZZ—— 保存并退出:x—— 保存并退出:q[uit]—— 退出當(dāng)前窗口-
刪除
x—— 刪除光標(biāo)所在位置的一個(gè)字符nx—— 刪除光標(biāo)所在位置的后面n個(gè)字符dw—— 向后刪除一個(gè)單詞db—— 向前刪除一個(gè)單詞dd—— 刪除光標(biāo)所在行ndd—— 刪除從光標(biāo)所在行開(kāi)始的n行-
移動(dòng)
0—— 移動(dòng)到行首g0—— 移到光標(biāo)所在屏幕行行首$—— 移動(dòng)到行尾g$—— 移動(dòng)光標(biāo)所在屏幕行行尾^—— 移動(dòng)到本行第一個(gè)非空白字符g^—— 同 ^ ,但是移動(dòng)到當(dāng)前屏幕行第一個(gè)非空字符處n|—— 把光標(biāo)移到第n列上nG—— 到特定的行數(shù)(n):n—— 移動(dòng)到第n行n+—— 移至游標(biāo)所在位置之后的第 n 列n-—— 移至游標(biāo)所在位置之前的第 n 列:$—— 移動(dòng)到最后一行gg—— 到文件頭部G—— 到文件尾部f/F+字符—— 向前/向后移動(dòng)到特定的字符(—— 前移1句)—— 后移1句{—— 前移1段}—— 后移1段j—— 下移一行k—— 上移一行gj—— 移動(dòng)到一段內(nèi)的下一行gk—— 移動(dòng)到一段內(nèi)的上一行+或Enter—— 把光標(biāo)移至下一行第一個(gè)非空白字符
上面的操作都可以配合n使用,比如輸入3h, 則光標(biāo)向左移動(dòng)3個(gè)字符-
復(fù)制
yw—— 復(fù)制單詞yf—— 復(fù)制當(dāng)前字符到指定字符yy或Y—— 復(fù)制當(dāng)前行nyy—— 復(fù)制當(dāng)前行開(kāi)始的n行y[n]w—— 復(fù)制1(n)個(gè)詞y$—— 從光標(biāo)當(dāng)前位置復(fù)制到行尾y0—— 從光標(biāo)當(dāng)前位置復(fù)制到行首-
剪切
d—— 刪除(剪切)在可視模式下選中的文本d$ or D—— 刪除(剪切)當(dāng)前位置到行尾的內(nèi)容d[n]w—— 刪除(剪切)1(n)個(gè)單詞d0—— 刪除(剪切)當(dāng)前位置到行首的內(nèi)容[n] dd—— 刪除(剪切)1(n)行-
粘貼
p—— 在光標(biāo)之后粘貼P—— 在光標(biāo)之前粘貼
(三)不常用Vim命令
-
插入文本
-
:r filename—— 在當(dāng)前位置插入另一個(gè)文件的內(nèi)容 -
:[n]r filename—— 在第n行插入另一個(gè)文件的內(nèi)容 -
:r !date—— 在光標(biāo)處插入當(dāng)前日期與時(shí)間(同理:r !command可以將其它shell命令的輸出插入當(dāng)前文檔)
-
-
文檔操作
:e file—— 關(guān)閉當(dāng)前編輯的文件,并開(kāi)啟新的文件,如果對(duì)當(dāng)前文件的修改未保存,vi會(huì)警告:e! file—— 放棄對(duì)當(dāng)前文件的修改,編輯新的文件:e+file—— 開(kāi)始新的文件,并從文件尾開(kāi)始編輯:e+n file—— 開(kāi)始新的文件,并從第n行開(kāi)始編輯:enew——編譯一個(gè)未命名的新文檔:e—— 重新加載當(dāng)前文檔:e!—— 重新加載當(dāng)前文檔,并丟棄已做的改動(dòng):e#或ctrl+^—— 回到剛才編輯的文件,很實(shí)用:f或ctrl+g—— 顯示文檔名,是否修改,和光標(biāo)位置:f filename—— 改變編輯的文件名,這時(shí)再保存相當(dāng)于另存為gf—— 打開(kāi)以光標(biāo)所在字符串為文件名的文件:n1,n2w filename—— 選擇性保存從某n1行到另n2行的內(nèi)容-
刪除
-
x—— 刪除游標(biāo)所在該字元 -
X—— 刪除游標(biāo)所在之前的字元 -
r—— 輸入新字元取代(replace)游標(biāo)所在字元(如:ra將游標(biāo)所在字元以 a 取代) -
R—— 進(jìn)入取代狀態(tài),直到Esc為止 -
s—— 刪除游標(biāo)所在之字元,并進(jìn)入輸入模式,直到Esc -
S—— 刪除游標(biāo)所在的一行,并進(jìn)入輸入模式,直到Esc
-
-
移動(dòng)
b—— 移動(dòng)到上個(gè)字的第一個(gè)字母w—— 移動(dòng)到下個(gè)字的第一個(gè)字母e—— 移動(dòng)到下個(gè)字的最后一個(gè)字母B—— 移動(dòng)到上一個(gè)單詞開(kāi)頭,忽略一些標(biāo)點(diǎn)W—— 移動(dòng)下一個(gè)單詞開(kāi)頭,但忽略一些標(biāo)點(diǎn)E—— 移動(dòng)到下一個(gè)單詞末尾,如果詞尾有標(biāo)點(diǎn),則移動(dòng)到標(biāo)點(diǎn)H—— 移至視窗的第一行M—— 移至視窗的中間那行L—— 移至視窗的最后一行G—— 移至該文件的最后一行+—— 移至下一列的第一個(gè)字元處-—— 移至上一列的第一個(gè)字元處ctrl+b—— 屏幕后移動(dòng)一頁(yè)ctrl+f—— 屏幕向前移動(dòng)一頁(yè)h或退格—— 左移一個(gè)字符l或空格—— 右移一個(gè)字符ge—— 后移一個(gè)單詞,光標(biāo)停在上一個(gè)單詞末尾gE—— 同 ge ,不過(guò)‘單詞’包含單詞相鄰的標(biāo)點(diǎn)tc—— 把光標(biāo)移到同一行的下一個(gè)c字符前Tc—— 把光標(biāo)移到同一行的上一個(gè)c字符后-
復(fù)制
y[n]l—— 復(fù)制光標(biāo)右邊1(n)個(gè)字符y[n]h—— 復(fù)制光標(biāo)左邊1(n)個(gè)字符:m,ny—— 復(fù)制m行到n行的內(nèi)容y1G或ygg—— 復(fù)制光標(biāo)以上的所有行yG—— 復(fù)制光標(biāo)以下的所有行-
剪切
d[n]l—— 刪除(剪切)光標(biāo)右邊1(n)個(gè)字符d[n]h—— 刪除(剪切)光標(biāo)左邊1(n)個(gè)字符:m,nd—— 剪切m行到n行的內(nèi)容d1G或dgg—— 剪切光標(biāo)以上的所有行dG—— 剪切光標(biāo)以下的所有行d/f—— 這是一個(gè)比較高級(jí)的組合命令,它將刪除當(dāng)前位置到下一個(gè)f之間的內(nèi)容-
滾屏
ctrl-u—— 文本向下滾到半屏。光標(biāo)不隨文本移動(dòng)。相當(dāng)于文本的窗口上移半屏ctrl-d—— 窗口向下移動(dòng)半屏,相當(dāng)于文本向上滾動(dòng)了半屏ctrl-e—— 向上滾動(dòng)一行ctrl-y—— 向下滾動(dòng)一行ctrl-f—— 向前滾動(dòng)一屏(forward)ctrl-b—— 向后滾動(dòng)一屏(backward)zt—— 把當(dāng)前行置于屏幕頂端zb—— 把當(dāng)前行置于屏幕底zz—— 把當(dāng)前行置于屏幕中央-
標(biāo)記
m{a-z}—— 標(biāo)記光標(biāo)所在位置,局部標(biāo)記,只用于當(dāng)前文件m{A-Z}—— 標(biāo)記光標(biāo)所在位置,全局標(biāo)記。標(biāo)記之后,退出Vim, 重新啟動(dòng),標(biāo)記仍然有效{a-z}—— 移動(dòng)到標(biāo)記位置'{a-z}—— 移動(dòng)到標(biāo)記行的行首{0-9}—— 回到上[2-10]次關(guān)閉vim時(shí)最后離開(kāi)的位置``—— 移動(dòng)到上次編輯的位置。''也可以,不過(guò)``精確到列,而''精確到行 。如果想跳轉(zhuǎn)到更老的位置,可以按C-o,跳轉(zhuǎn)到更新的位置用C-i``"` —— 移動(dòng)到上次離開(kāi)的地方
``.` —— 移動(dòng)到最后改動(dòng)的地方
:marks—— 顯示所有標(biāo)記:delmarks a b—— 刪除標(biāo)記a和b:delmarks a-c—— 刪除標(biāo)記a、b和c:delmarks a c-f—— 刪除標(biāo)記a、c、d、e、f:delmarks!—— 刪除當(dāng)前緩沖區(qū)的所有標(biāo)記
**使用標(biāo)記可以快速移動(dòng)。到達(dá)標(biāo)記后,可以用Ctrl+o返回原來(lái)的位置。 Ctrl+o和Ctrl+i 很像瀏覽器上的 后退 和 前進(jìn) **
-
查找
-
/something—— 在后面的文本中查找something -
?something—— 在前面的文本中查找something -
/pattern/+number—— 將光標(biāo)停在包含pattern的行后面第number行上 -
/pattern/-number—— 將光標(biāo)停在包含pattern的行前面第number行上 -
n—— 向后查找下一個(gè) -
N—— 向前查找下一個(gè)
-
-
替換
-
:s/old/new—— 用new替換當(dāng)前行第一個(gè)old -
:s/old/new/g—— 用new替換當(dāng)前行所有的old -
:n1,n2s/old/new/g—— 用new替換文件n1行到n2行所有的old -
:%s/old/new/g—— 用new替換文件中所有的old -
:%s/^/xxx/g—— 在每一行的行首插入xxx,^表示行首 -
:%s/$/xxx/g—— 在每一行的行尾插入xxx,$表示行尾
-
-
分屏編輯
vim -o file1 file2—— 水平分割窗口,同時(shí)打開(kāi)file1和file2vim -O file1 file2—— 垂直分割窗口,同時(shí)打開(kāi)file1和file2-
排版
-
<<—— 向左縮進(jìn)一個(gè)寬度 -
>>—— 向右縮進(jìn)一個(gè)寬度 -
:ce(nter)—— 本行文字居中 -
:le(ft)—— 本行文字靠左 -
:ri(ght)—— 本行文字靠右
-
-
拼寫檢查
:set spell—— 開(kāi)啟拼寫檢查功能:set nospell——關(guān)閉拼寫檢查功能]s—— 移到下一個(gè)拼寫錯(cuò)誤的單詞[s——作用與上一命令類似,但它是從相反方向進(jìn)行搜索z=—— 顯示一個(gè)有關(guān)拼寫錯(cuò)誤單詞的列表,可從中選擇zg—— 告訴拼寫檢查器該單詞是拼寫正確的zw—— 與上一命令相反,告訴拼寫檢查器該單詞是拼寫錯(cuò)誤的
參考文章推薦
Vim 常用命令大全
Linux基礎(chǔ)命令和Vim常用命令
不定期完善中...
