Vim工作模式
Vim的三種最基礎工作模式:
命令模式:以快捷鍵在命令模式做操作。vim默認爲命令模式。
插入模式:即可以使用鍵盤做操作。
編輯模式:以命令與回車進行操作。
注:進入編輯模式的標誌是冒號
模式之間的切換
在編輯模式下,輸入命令可以打開或關閉行號的顯示。
set nu :顯示行號。
set nonu :隱藏行號。
插入命令
如下按鍵,使vim從命令模式切換到插入模式。
a:在光標後附加文本
A:在本行行末附加文本。
i:在光標前插入文本
I:在本行開始前插入文本。
o:在光標所在行之後下插入新行。
O:在光標所在行之前插入新行。
光標(定位)命令
字符間跳轉:
數字+光標移動鍵
例:數字+h: 向左側跳指定個字符;一以此類推。
行內跳轉:
^: 跳至行首的第一個非空白字符。
$: 跳至絕對行尾。
0: 跳至絕對行首。
單詞間跳轉:
w: 後一個單詞的詞首
e: 跳至當前或下一個單詞啓尾;
b: 跳至當前或前一個單詞啓首;
句子間跳轉:
) : 下一句;
( : 前一句;
段落間跳轉:
} : 下一段;
{ : 前一段;
屏幕中跳轉:
H:移至屏幕上端。
M:移至屏幕中央。
L:移至屏幕下端。
光標跳轉至指定行:
gg :到第一行。
G :到最後一行。
nG :到第n行。
:n :到第n行。
<b>行號命令</b>
刪除命令
x:刪除光標所在處字符。
nx:刪除光標所在處後n個字符。
dd:刪除光標所在行。
ndd:刪除n行。
D:刪除從光標所在處到行尾。
dG:刪除光標所在行到文件末尾的內容。
在編輯模式下
:n1,n2d:n1,n2表示行號。刪除指定範圍的行。
複製和剪切命令
yy、Y:複製當前行。
nyy、nY:複製當前行以下n行。
dd:剪切當前行。
ndd:剪切當前行以下n行。
p、P:粘帖在當前光標所在行下或行上。
剪切粘貼:
dd+p
複製粘貼:
yy+p
替換命令
字符 | 使用方法 | 說明 | 例子 |
---|---|---|---|
r | 更改光標所在處的字符 | ||
R | 從光標所在處開始替換字符,按下Esc結束 | ||
:%s/old/new/g | 全文替換字符串。old表示原字符串,new表示新字符串 | ||
:n1,n2s/old/new/g | n1、n2表示行號。old表示原字符串,new表示新字符串。 | 4,10s/superman/aoteman/g | |
:n1,n2s/old/new/g c | 在命令後使用c,表示替換時,會提示。 |
技巧
連續行註釋
:n1,n2s/^/#/g :爲n1行到n2行的行首插入“#”。n1,n2爲數字,表示行號;^是一個特殊符號,表示行首。
:n1,n2s/#//g :爲n1行到n2行中的“#”去除。n1,n2爲數字,表示行號。
:n1,n2s/^#//g :爲n1行到n2行中行首的“#”去除。n1,n2爲數字,表示行號。^是一個特殊符號,表示行首。
:n1,n2s/^/\/\//g :爲n1行到n2行的行首插入“//”。n1,n2爲數字,表示行號;^是一個特殊符號,表示行首。\是轉義符。
輸入替換
在編輯模式下輸入
:ab mymail [email protected]
回車後,在插入模式下每當輸入了“mymail ”,vim將自動將其替換爲“[email protected]”
取消ab設置。
:unab mymail [email protected]
搜索命令
/string :命令模式下輸入“/”再輸入需要查找的字符串,回車。vi即會開始查找字符串。該搜索區分大小寫。
n:定位到下一個匹配的字符串。
N:定位到上一個匹配的字符串。
在編輯模式寫,打開 忽略大小寫功能
:set ic
關閉 忽略大小寫功能
:set noic
撤銷命令
u:取消上一步操作。保存後無法再進行撤銷。
保存與退出
在命令模式
保存 :w
另存爲 :w /filepath/filename
保存退出 :wq、ZZ(shift+z+z)
強制保存退出 :wq!
強行退出 :q!
注:文件的所有者或者root用戶,即便沒有文件的寫權限,也可以強行保存退出。
vi中執行命令
在編輯模式下,使用:!後跟Linux命令,這樣就可以在vi中執行Linux命令了。
例:查看/root目錄下的內容
:! ls /root
導入文件內容
:r /fileparh/filename
將指定文件的內容導入到當前正在編輯的文件中
導入執行結果
:r !linux
例:這是一個小技巧,在文件中導入時間。
:r !date
map定義快捷鍵
:map 快捷鍵 替代內容
使用map可以在vi中定義快捷鍵。使用unmap取消快捷鍵。
例:定義【Ctrl+E】在文檔中快速插入自己的郵箱。
“:map ^E [email protected]”
例:定義【Ctrl+B】在光標所在行的第一個字母取出。該快捷鍵可用於shell腳本中刪除第一個字母 # 。
“:map ^B 0x”
注:^打法:ctrl+v