一:退出vim
1.q(quit):退出Vi
2.w(write):存盤
3.w + 文件名:另存為指定文件
4.w !+ 文件名:另存為指定文件,如該文件已存在,覆蓋已有文件
5.wq(與:x等價):存盤退出
6.q!:不存盤退出
7.wq!:強制存盤退出
8.ZZ:存盤并退出Vi
二:移動命令
n上下左右(可以用方向鍵直接移動)
h 左,或 Backspace 或 方向鍵
j 下,或 回車 或 + 或 方向鍵
k 上,或 - 或 方向鍵
l 右,或 Space 或 方向鍵
移動到行首
^ (移至第一個非空字符)或 Home鍵(移至行首,包括空字符)
移動到行尾
$ 或 End鍵
移動到當前頁的首行
H
移動到當前頁的中間行
M
移動到當前頁的最后一行
L
以word為單位移動
w
顯示行號
:set number 或 :set nu
移動到第n行
:n
向上滾動一屏(即Pagedown)
Ctrl + b(backward)
向下滾動一屏(即Pageup
Ctrl + f (forward)
屏幕向下滾動一行
Ctrl + e
三. 刪除命令
刪除光標所在行
dd(delete):刪除光標所在行,下一行自動上移
DD :刪除光標所在行,下一行不上移
刪除一個字符
x:刪除光標所在字符
X:刪除光標前的字符
刪除n個字符
nx:刪除從光標處字符開始的n個字符
nX:刪除從行首開始的n個字符
刪除從光標處開始到本行末尾的所有字符
D
四.復制與粘貼
yank和put分別對應Windows下的Copy和Paste
yy(yank):復制當前行
nyy: 復制多行
yw:復制一個詞
p(put):粘貼到光標后
P:粘貼到光標前
多行復制,粘貼僅能在視窗模式下進行
五.搜索和替換
n搜索
/word 向下搜索
?word 向上搜索
n 繼續尋找
N 繼續尋找,反向搜索游標所在處的字符
g* 同*,但部分符合即可
替換
:[range]s / pattern / string / [c,e,g,i]
range:表示范圍,如:1,7 1,$ % #
pattern:被替換的字符串
string:替換的字符串
c(confirm) :替換前詢問
e (error) :不顯示error
g (global) :不詢問,整行替換
i (ignore) :不區分大小寫
eg:%s/Edwin/Edward/g表示在整篇文章中將Edwin替換成Edward;
六、其它
0 – 到行首
$ – 到行尾
^ – 到行首字母
( – 到上面一句或者上面一個代碼段
) – 到下面一句或者下面一個代碼段
`. – 到最后一次修改的位置,注意這個`不是單引號,是1左邊的那個按鍵
/<文字> – 搜索指定文字,找到之后使用n來跳到下一個相同單詞位置
:<數值> – 轉跳到指定行數
:$ – 轉跳到文件末尾,這個和G的作用相同,但是我覺得更加好記,因為和轉跳行數一樣,而且$一般被用來標識末尾
i – 插入模式,I也可以,還有a,A,但是個人感覺提高效率不明顯
o – 在當前行下面建立新行,對應的有O,在當前行上面,但是O很少用,除非你已經到頂行而且要在上面插入一行.
v – 進入區塊選擇
y – 復制已經選擇的區塊
yy – 復制當前行
d – 剪切已經選擇的區塊
dd – 剪切當前行
p – 粘貼已經選擇的區塊
. – 重復上次指令
<數值><指令> – 重復執行指定的指令,例如10dd,剪切10行
% – 匹配花括號,方括號,括號等,用于例如跳轉到對應的{}位置
gd – 到達光標所在處函數或者變量的定義處
> – 縮進代碼,在v下可用
>> – 縮進當前行代碼
< – 反縮進代碼,在v下可用
<< – 反縮進當前行