文章目錄
k 上
h l 左 右
j 下
^ 移動到該行第一個非空格的字元處
w 向前移動一個單詞,將符號或標點當作單詞處理
W 向前移動一個單詞,不把符號或標點當作單詞處理
b 向後移動一個單詞,把符號或標點當作單詞處理
B 向後移動一個單詞,不把符號或標點當作單詞處理
0 到行首
$ 到行尾
gg 到頁首
G 到頁末
行號+G 跳轉到指定行
Ctrl+g 查詢當前行資訊和當前檔案資訊
fx 向右跳到本行字元x處(x可以是任何字元)
Fx 向左跳到本行字元x處(x可以是任何字元)
tx 和fx相同,區別是跳到字元x前
Tx 和Fx相同,區別是跳到字元x後
C-b 向上滾動一屏
C-f 向下滾動一屏
C-u 向上滾動半屏
C-d 向下滾動半屏
C-y 向上滾動一行
C-e 向下滾動一行
退出Vi
ZZ:退出vi並儲存
:q! :退出vi,不儲存
:wq :退出vi並儲存
重複操作
.:重複上一次操作
自動補齊
C-n 匹配下一個關鍵字
C-p 匹配上一個關鍵字
插入
o:在游標下方新開一行並將游標置於新行行首,進入插入模式。
O:同上,在游標上方。
a:在游標之後進入插入模式。
A:同上,在游標之前。
R:進入替換模式,直到按下Esc
set xxx:設定XXX選項。
在Vi中刪除
x: 刪除當前游標下的字元
dw:刪除游標之後的單詞剩餘部分。
d$:刪除游標之後的該行剩餘部分。
dd:刪除當前行。
c: 功能和d相同,區別在於完成刪除操作後進入INSERT MODE
cc:也是刪除當前行,然後進入INSERT MODE
更改字元
rx:將當前游標下的字元更改為x(x為任一字元) ~: 更改當前游標下的字元的大小寫
鍵盤宏操作
qcharacter:開始錄製宏,character為a到z的任一字元
q:終止錄製宏
@character:調用先前錄製的宏
恢複誤操作
u: 撤銷最後執行的命令
U: 修正之前對該行的操作
Ctrl+R:Redo
在Vi中操作Frame
c-w c-n 增加frame
c-w c-c 減少frame
c-w c-w 切換frame
c-w c-r 交換兩個frame
在Vi中尋找
/ + 字串:即可在當前檔案尋找相應的字串。
繼續尋找同一個字串,按n或/(ENTER),若要反向繼續尋找,按Shift+N。
若要逆向尋找,用?代替 /
.*[]^%~$ 在Vi中具有特殊含義,若需要尋找則應該加上逸出字元"\"
% :尋找配對的括弧。
s/old/new/g:替換old為new,若沒有g則表示只替換一個。
若要每個替換都向使用者詢問則應該用gc選項
尋找的一些選項設定高亮
:set hlsearch 設定高亮
:set nohlsearch 關閉高亮
:nohlsearch 關閉當前已經設定的高亮
增量尋找
:set incsearch 設定增量尋找
:set noincsearch 關閉增量尋找
VIM中的塊操作
Vim支援多達26個剪貼簿
選塊 先用v,C-v,V選擇一塊,然後用y複製,再用p粘貼。
yy 複製當前整行
nyy 複製當前行開始的n行內容
ayy 將游標當前行複製進寄存器a
ap 將寄存器a中的內容粘貼到游標位置之後。如果a是用yy複製的完整行,則粘貼在游標所在行下面。
aP 將寄存器a中的內容粘貼到游標位置之前。如果a是用yy複製的完整行,則粘貼在游標所在行上面。
ay[motion]
ay$ 複製游標位置到行末並儲存在寄存器a中
ayft 複製游標位置到當前行第一個字母t並儲存在寄存器a中
以上指令皆可去掉a工作,則y,p對未命名寄存器工作(所有d,c,x,y的對象都被儲存在這裡)。
剪下/複製/粘貼
所有刪除的內容自動被儲存,可以用p鍵粘貼
tips
對代碼自動格式化 gg=G