VIM快捷鍵-匯總&自定義Key
為了避免:號輸入命令產生的歧義, 以下出現的提示後用=替代,
幫助 :help
快捷鍵幫助 :help c_CTRL-A 在c模式下快捷鍵的用途,前綴i,v,c分別表示插入,可視,命令模式。
命令計數:數字+命令,重復N次操作,例如:
3k 向上移動3行,
3x
3a!插入三個歎號
tags移動:JKHL
快速移動,對比terminal快捷鍵:
移動到上一個單詞首 b
移動到下一個單詞首 w,移動3個單詞 3w
<----b w---->
w/b是在單詞首部移動,在單詞尾部移動為ge/e
<----ge e---->
如果是大寫的B,W,gE,E,則只將“空格”作為單詞分隔符,例如'gloal.member'被當作一個完整的詞。
^ 光標移動到行開頭
$ 光標移動到行結尾
fx 光標移動到下一個x處,3fx移動到第三個x處
Fx 光標移動到前面的x處
tx,Tx類似,移動到x之前
ma 標記當前行, 標簽可以是a-z任意字符。
`a 跳轉到a標簽。
標簽跳轉 C-]
跳轉回 C-O 或 C-T 或``
Ctrl + 左/右鍵 也可以跳轉/返回
跳轉到匹配的括號 %
移動到文件首 gg
有趣的命令 9999k 作用也是移動到文件首
移動到文件尾 G
跳轉到第33行 33G
或者輸入 :33 也可以跳轉
%液動, 例如移動到文檔1/3處 ,直接輸入33%
zz 將當前光標所在的行移到屏幕中間 ,ps大寫的ZZ是保存&退出文檔。
zt 當前光標所在的行移到屏幕頂,助記t=top 。
zb 當前光標所在的行移到屏幕底,助記b=bottom 。
H, M, L分別為移動到文檔的head, middle, last的位置。
C-F , C-B 向前向後翻頁
Linux 終端( Terminal)中常用的快捷鍵
ctrl+f 向前移動一個字符
ctrl+b 向後移動一個字符
alt+f 向前移動一個單詞
alt+b 向後移動一個單詞
ctrl+a 移動到當前行首
ctrl+e 移動到當前行尾
tags 編輯
c,d和x刪除的字符仍然存在寄存器中,用p可以粘貼。
c = 替換(change),刪除文本並進入插入模式;
d =刪除(delete),一般組合使用;
y =復制(yank),
p = 粘貼(paste);
x = 刪除字符;
刪除,剪切,復制一行= cc,dd,yy
刪除,剪切,復制多行= 3cc,4dd,5yy
刪除,剪切,復制到行尾= c$,d$,y$
或者大寫C, D, Y, 也是到行尾.
刪除,剪切,復制到行開頭= c^,d^,y^ 或者c0,d0,y0
從光標開始, 刪除,剪切,復制到單詞尾=cw,dw,yw
刪除,剪切,復制整個單詞= caw,daw,yaw
注意區別yw和yaw, 例如光標在"test" 的e位置, yaw復制整個單詞, yw只復制est。
刪除換行符(兩行合並為一行): J
撤銷上次操作(還原): u
反撤銷(重做): C-R
撤銷對一行的所有操作(還原一行): U,第二次按U會撤銷上一次U的操作。
只用u和C-R即可回到任何一個操作狀態。
可視模式下的U/u是大小寫轉換。
o或O在當前行上或下插入文本
光標前插入 = i
光標後插入 = a
行首插入 = I
行尾插入 = A
在當前行的下面另起一行,並進入插入狀態 o
在當前行的前面另起一行,並進入插入狀態 O
CTRL-T is working with tags stack
CTRL-O is working with jumplist
Tag stack and jumplist are different list in vim, but they might have same items when you jumping through tags (eg. using CTRL-])
tags 外部程序粘貼/剪切/復制
GVIM的“+號寄存器”可以與外部程序復制/粘貼:
復制 "+y
粘貼 "+p
剪切 "+x
注: 以上快捷鍵在命令可視模式/模式有效,先按雙引號進入寄存器模式,再按加號,然後按y/p/x
如果在插入模式, 先按ctrl+R進入寄存器模式(會出現"號), 再按對應的寄存器編號,系統共享寄存器編號是+號.
在VIM正常模式下,ctrl+r 是重做。
tags 多文件buff(緩沖區)操作
:edit filename 編輯文件;
:e main.c 同上;
:ls 列出所有buffer;
:b2 關閉buff=2的文件;
:bn 刪除文件緩沖(關閉文件)。
zz,ZZ與q!的用法:
zz 將編輯行置於屏幕中間。
ZZ 保存退出。
:q! 不保存退出
:wq 保存退出
tags 搜索和替換
:set ignorecase
:set noignorecase
/include 正向搜索,n下一個,N上一個
?include 反向搜索
設置非循環搜索 :set nowrapscan
/\<the\> 全詞匹配搜索單詞"the",助記開頭\<,結尾\>
#向後搜索匹配單詞,*向前搜索匹配單詞, gd類似*號的功能.
tags 正則搜索
/^the 搜索the開頭的行(針對行,而非單詞)
/here$ 搜索here結尾的行
點號匹配任何單字符,如果要搜索的內容本身包含點號,則用\.代替,比如:
/the. 搜索"the"匹配的內容
/the\. 搜索"the."匹配的內容
tags 可視模式
shift + v : 行選擇模式
大寫V: 同上
所選擇區域轉換為大寫 U,轉換為小寫u
x和d在可視模式都是刪除
>和<在可視模式為右移,左移
tags 常用組合鍵
刪除光標到行結尾 /開頭= d$ d^
復制光標到行結尾 /開頭= y$ y^
復制單詞= yaw
剪切單詞= daw
tags 代碼折疊
可以zf進行折疊, 用zo打開折疊,也可以方向鍵向右打開折疊,zc 關閉折疊.
tags 自定義快捷鍵
inoremap ii <ESC> 進入insert模式
雙擊進入insert模式;
insert模式下, 左鍵進入command模式;
拖拽可視模式;
map <C-c> "+y "加號寄存器-復制
map <C-v> "+p "加號寄存器-復制
map <C-x> "+x "加號寄存器-復制
map <C-s> :w<cr> " 保存
cscope快捷鍵,ctrl + \ + :
:cs find s xxx
:cs find g xxx 查找函數定義,類似tags的ctrl+]
:cs find t xxx 全局查找字符串
:cs find c xxx 類似egrep
:cs find c xxx 查找函數所有調用處
注, cscope的搜索不能處於visual選擇模式