命令歷史
以:
和/
開頭的命令都有歷史紀(jì)錄馆匿,可以首先鍵入:或/然后按上下箭頭來選擇某個歷史命令。
啟動vim
在命令行窗口中輸入以下命令即可
-
vim
直接啟動vim -
vim filename
打開vim并創(chuàng)建名為filename的文件
文件命令
- 打開單個文件
vim file
- 同時打開多個文件
vim file1 file2 file3 ...
- 在vim窗口中打開一個新文件
:open file
- 在新窗口中打開文件
:split file
- 切換到下一個文件
:bn
- 切換到上一個文件
:bp
- 查看當(dāng)前打開的文件列表燥滑,當(dāng)前正在編輯的文件會用[]括起來渐北。
:args
- 打開遠(yuǎn)程文件,比如ftp或者share folder
:e ftp://192.168.10.76/abc.txt
或者:e \\qadrive\test\1.txt
vim的模式
- 正常模式(按
Esc
或Ctrl+[進(jìn)入) 左下角顯示文件名或?yàn)榭?/li> - 插入模式(按
i
鍵進(jìn)入) 左下角顯示--INSERT-- - 可視模式(不) 左下角顯示--VISUAL--
- 導(dǎo)航命令
移動命令
-
^
:移動光標(biāo)到行首铭拧; -
$
:移動光標(biāo)到行尾赃蛛; -
ctrl-b
:類似于鍵盤上的"PgUp"(b為backword) -
ctrl-f
:類似于鍵盤上的"PgDn"(f為forword) -
G
:移動到末行; -
1G
:移動到首行搀菩; -
50G
:移動到50行呕臂; -
H
:移動到當(dāng)前窗口的首行; -
M
:移動到當(dāng)前窗口的中間位置秕磷; -
L
:移動光標(biāo)到當(dāng)前窗口的最后一行诵闭; -
w
:光標(biāo)移動到下一個單詞的詞首;注:對于中文澎嚣,連續(xù)的多個漢字作為一個word疏尿。 -
2w
:重復(fù)執(zhí)行w操作2次; -
e
:光標(biāo)移動到下一個單詞的詞尾易桃; -
5e
:重復(fù)執(zhí)行e操作5次褥琐; -
b
:向前移動光標(biāo),移動到前一個單詞的詞首晤郑;
句字(sentences)直接移動操作:
-
)
:光標(biāo)移動到下一句敌呈; -
(
:光標(biāo)移動到上一句; -
3)
:光標(biāo)移動到向下3句
段落(paragraphs)直接移動操作:
-
{
:向上移動一個段落造寝; -
}
:向下移動一個段落 -
3}
:向下移動3個段落
更多操作在vim Normal模式下輸入 :help cursor-motions
http://blog.csdn.net/richerg85/article/details/17636827
vim 快速選中并復(fù)制粘貼替換一個單詞
- 光標(biāo)移動到aaa的開頭磕洪,按 v 按e 按y
- 光標(biāo)移動到bbb的開頭,按 v 按e 按p
也就說诫龙,快速選中一個單詞析显,按v按e即可。
- 復(fù)制一個單詞:
yaw
- 復(fù)制一行:
yim
光標(biāo)在中間
插入命令
-
i
在當(dāng)前位置生前插入 -
I
在當(dāng)前行首插入 -
a
在當(dāng)前位置后插入 -
A
在當(dāng)前行尾插入 -
o
在當(dāng)前行之后插入一行 -
O
在當(dāng)前行之前插入一行
查找命令
-
/text
查找text签赃,按n健查找下一個谷异,按N健查找前一個。 -
?text
查找text锦聊,反向查找歹嘹,按n健查找下一個,按N健查找前一個孔庭。 - vim中有一些特殊字符在查找時需要轉(zhuǎn)義
.*[]^%/?~$
-
:set ignorecase
忽略大小寫的查找 -
:set noignorecase
不忽略大小寫的查找 - 查找很長的詞尺上,如果一個詞很長,鍵入麻煩,可以將光標(biāo)移動到該詞上尖昏,按
*
或#
鍵即可以該單詞進(jìn)行搜索仰税,相當(dāng)于/搜索构资。而#命令相當(dāng)于?搜索抽诉。 -
:set hlsearch
高亮搜索結(jié)果,所有結(jié)果都高亮顯示吐绵,而不是只顯示一個匹配迹淌。 -
:set nohlsearch
關(guān)閉高亮搜索顯示 -
:nohlsearch
關(guān)閉當(dāng)前的高亮顯示,如果再次搜索或者按下n或N鍵己单,則會再次高亮唉窃。 -
:set incsearch
逐步搜索模式,對當(dāng)前鍵入的字符進(jìn)行搜索而不必等待鍵入完成纹笼。 -
:set wrapscan
重新搜索纹份,在搜索到文件頭或尾時,返回繼續(xù)搜索廷痘,默認(rèn)開啟蔓涧。
替換命令
-
ra
將當(dāng)前字符替換為a,當(dāng)期字符即光標(biāo)所在字符笋额。 -
s/old/new/
用old替換new元暴,替換當(dāng)前行的第一個匹配 -
s/old/new/g
用old替換new,替換當(dāng)前行的所有匹配 -
%s/old/new/
用old替換new兄猩,替換所有行的第一個匹配 -
%s/old/new/g
用old替換new茉盏,替換整個文件的所有匹配 -
:10,20 s/^/ /g
在第10行知第20行每行前面加四個空格,用于縮進(jìn)枢冤。 -
ddp
交換光標(biāo)所在行和其下緊鄰的一行鸠姨。
移動命令
-
h
左移一個字符 -
l
右移一個字符,這個命令很少用淹真,一般用w代替讶迁。 -
k
上移一個字符 -
j
下移一個字符 - 以上四個命令可以配合數(shù)字使用,比如
20j
就是向下移動20行趟咆,5h
就是向左移動5個字符添瓷,在Vim中,很多命令都可以配合數(shù)字使用值纱,比如刪除10個字符10x
鳞贷,在當(dāng)前位置后插入3個!虐唠,3a搀愧!<Esc>
,這里的Esc是必須的,否則命令不生效咱筛。 -
w
向前移動一個單詞(光標(biāo)停在單詞首部)搓幌,如果已到行尾,則轉(zhuǎn)至下一行行首迅箩。此命令快溉愁,可以代替l命令。 -
b
向后移動一個單詞2b
向后移動2個單詞 -
e
饲趋,同w拐揭,只不過是光標(biāo)停在單詞尾部 -
ge
,同b奕塑,光標(biāo)停在單詞尾部堂污。 -
^
移動到本行第一個非空白字符上。 -
0
(數(shù)字0)移動到本行第一個字符上龄砰, -
<HOME>
移動到本行第一個字符盟猖。同0健。 -
$
移動到行尾3$
移動到下面3行的行尾 -
gg
移動到文件頭换棚。 = [[ -
G
(shift + g) 移動到文件尾式镐。 = ]] -
f
(find)命令也可以用于移動,fx
將找到光標(biāo)后第一個為x的字符圃泡,3fd
將找到第三個為d的字符碟案。 -
F
同f,反向查找颇蜡。 - 跳到指定行价说,
:n
,回車风秤,比如跳到240行就是 :240回車鳖目。另一個方法是行號+G,比如230G跳到230行缤弦。 -
Ctrl + e
向下滾動一行 -
Ctrl + y
向上滾動一行 -
Ctrl + d
向下滾動半屏 -
Ctrl + u
向上滾動半屏 -
Ctrl + f
向下滾動一屏 -
Ctrl + b
向上滾動一屏
撤銷和重做
-
u
撤銷(Undo) -
U
撤銷對整行的操作 -
Ctrl + r
重做(Redo)领迈,即撤銷的撤銷。
刪除命令
-
x
刪除當(dāng)前字符 -
3x
刪除當(dāng)前光標(biāo)開始向后三個字符 -
X
刪除當(dāng)前字符的前一個字符碍沐。X=dh -
dl
刪除當(dāng)前字符狸捅, dl=x -
dh
刪除前一個字符 -
dd
刪除當(dāng)前行 -
dj
刪除上一行 -
dk
刪除下一行 -
10d
刪除當(dāng)前行開始的10行。 -
D
刪除當(dāng)前字符至行尾累提。D=d$ -
d$
刪除當(dāng)前字符之后的所有字符(本行) -
kdgg
刪除當(dāng)前行之前所有行(不包括當(dāng)前行) -
jdG
(jd shift + g) 刪除當(dāng)前行之后所有行(不包括當(dāng)前行) -
:1,10d
刪除1-10行 -
:11,$d
刪除11行及以后所有的行 -
:1,$d
刪除所有行 -
J
(shift + j) 刪除兩行之間的空行尘喝,實(shí)際上是合并兩行。
拷貝和粘貼
-
yy
拷貝當(dāng)前行 -
nyy
拷貝當(dāng)前后開始的n行斋陪,比如2yy拷貝當(dāng)前行及其下一行朽褪。 -
p
在當(dāng)前光標(biāo)后粘貼,如果之前使用了yy命令來復(fù)制一行置吓,那么就在當(dāng)前行的下一行粘貼。 -
shift+p
在當(dāng)前行前粘貼 -
:1,10 co 20
將1-10行插入到第20行之后缔赠。 -
:1,$ co $
將整個文件復(fù)制一份并添加到文件尾部衍锚。 - 正常模式下按
v
(逐字)或V
(逐行)進(jìn)入可視模式,然后用jklh命令移動即可選擇某些行或字符嗤堰,再按y
即可復(fù)制 -
ddp
交換當(dāng)前行和其下一行 -
xp
交換當(dāng)前字符和其后一個字符
剪切命令
- 正常模式下按
v
(逐字)或V
(逐行)進(jìn)入可視模式戴质,然后用jklh命令移動即可選擇某些行或字符,再按d
即可剪切 -
ndd
剪切當(dāng)前行之后的n行梁棠。利用p命令可以對剪切的內(nèi)容進(jìn)行粘貼 -
:1,10d
將1-10行剪切置森。利用p命令可將剪切后的內(nèi)容進(jìn)行粘貼。 -
:1, 10 m 20
將第1-10行移動到第20行之后符糊。
退出命令
-
:wq
保存并退出 -
ZZ
保存并退出 -
:q!
強(qiáng)制退出并忽略所有更改 -
:e!
放棄所有修改,并打開原來文件呛凶。
窗口命令
-
:split
或:new
打開一個新窗口男娄,光標(biāo)停在頂層的窗口上 -
:split file
或:new file
用新窗口打開文件 -
split
打開的窗口都是橫向的,使用vsplit
可以縱向打開窗口漾稀。 -
Ctrl+ww
移動到下一個窗口 -
Ctrl+wj
移動到下方的窗口 -
Ctrl+wk
移動到上方的窗口
關(guān)閉窗口
-
:close
最后一個窗口不能使用此命令模闲,可以防止意外退出vim。 -
:q
如果是最后一個被關(guān)閉的窗口崭捍,那么將退出vim尸折。 -
ZZ
保存并退出。 - 關(guān)閉所有窗口殷蛇,只保留當(dāng)前窗口
:only
錄制宏
- 按
q
鍵加任意字母開始錄制实夹,再按q鍵結(jié)束錄制(這意味著vim中的宏不可嵌套),使用的時候@加宏名粒梦,比如qa亮航。。匀们。q錄制名為a的宏缴淋,@a
使用這個宏。
執(zhí)行shell命令
:!command
:!ls 列出當(dāng)前目錄下文件
-
:!perl -c script.pl
檢查perl腳本語法泄朴,可以不用退出vim重抖,非常方便。 -
:!perl script.pl
執(zhí)行perl腳本祖灰,可以不用退出vim钟沛,非常方便。 -
:suspend
或Ctrl - Z
掛起vim夫植,回到shell讹剔,按fg
可以返回vim油讯。
注釋命令
perl程序中#開始的行為注釋,所以要注釋某些行延欠,只需在行首加入#
-
3,5 s/^/#/g
注釋第3-5行 -
3,5 s/^#//g
解除3-5行的注釋 -
1,$ s/^/#/g
注釋整個文檔陌兑。 -
:%s/^/#/g
注釋整個文檔,此法更快由捎。
幫助命令
-
:help
or F1 顯示整個幫助 -
:help xxx
顯示xxx的幫助兔综,比如 :help i, :help CTRL-[(即Ctrl+[的幫助)。 -
:help 'number'
Vim選項(xiàng)的幫助用單引號括起 -
:help <Esc>
特殊鍵的幫助用<>擴(kuò)起 -
:help -t
Vim啟動參數(shù)的幫助用- -
:help i_<Esc>
插入模式下Esc的幫助狞玛,某個模式下的幫助用模式_主題的模式
幫助文件中位于||之間的內(nèi)容是超鏈接软驰,可以用Ctrl+]進(jìn)入鏈接,Ctrl+o(Ctrl + t)返回
其他非編輯命令
來自:http://www.cnblogs.com/softwaretesting/archive/2011/07/12/2104435.html
IdeaVim插件使用技巧
在 IDEA Intellij小技巧和插件 一文中簡單介紹了一下IdeaVim插件心肪。在這里詳細(xì)總結(jié)一下這個插件在日常編程中的一些常用小技巧锭亏。供有興趣使用這個插件,但對Vim還不十分熟悉的朋 友參考硬鞍。當(dāng)然基本的hjkl移動光標(biāo)和幾種常見模式等等基本概念就略過不提了慧瘤。
為了確保只包含常用操作,這里提到的技巧都沒有從現(xiàn)成文檔里抄固该,而是憑記憶列出(不常用自然就不記得了)锅减。估計會有所遺漏,慢慢再補(bǔ)充伐坏。
1. 切換Vim模擬器狀態(tài)
這個插件允許設(shè)置一個快捷鍵一鍵開啟或關(guān)閉怔匣,在切換模式時會同時自動切換keymap,十分方便桦沉。默認(rèn)鍵位是Ctrl+Alt+V
每瞒,但這個鍵位覆蓋了很常用的“抽取局部變量”功能,建議重設(shè)永部,在setting->keymap中查找VIM Emulator即可独泞。
由 于開啟和關(guān)閉狀態(tài)分別使用兩套keymap,因此兩套都需要設(shè)定苔埋∨成埃可以把兩套keymap下的都設(shè)為一樣的鍵,也就是用同一個鍵切換组橄。但個人建議設(shè)為不同 的鍵荞膘,這樣能清楚知道當(dāng)前處于那種模式中。并且玉工,如果在開啟Vim的插入模式下關(guān)閉Vim模擬器羽资,下次進(jìn)入時仍然是插入模式,比較混亂(因?yàn)槟汴P(guān)閉模擬器 就是為了使用默認(rèn)keymap輸入大段代碼遵班,重新開啟Vim模擬器就是為了使用普通模式下的命令)屠升。因此建議把Vim keymap中的Exit Insert Mode設(shè)為與另一個keymap的Vim Emulator相同的鍵(也就是進(jìn)入Vim模擬器的快捷鍵)潮改。例如,我使用的設(shè)定是:
- Default keymap -> Vim Emulator :
Ctrl+;
(用Ctrl+分號開啟Vim模擬器) - Vim keymap -> Vim Emulator :
Ctrl+,
(用Ctrl+逗號關(guān)閉Vim模擬器) - Vim keymap -> Vim Emulator :
Ctrl+;
(用Ctrl+分號退出插入模式腹暖,進(jìn)入普通模式)
這樣汇在,在任何時候只要連按兩下ctrl+分號,就能保證必定在Vim模擬器的普通模式中脏答。
2. ScrollOff 參數(shù)
啟 動Intellij后在Vim模擬器下輸入命令 :set so=5 可以令屏幕滾動時在光標(biāo)上下方保留5行預(yù)覽代碼(也就是光標(biāo)會在第5行觸發(fā)向上滾動糕殉,或者在倒數(shù)第5行觸發(fā)向下滾動)。在代碼窗口比較狹小時(例如單步跟 蹤調(diào)試時)非常方便殖告“⒌可惜僅在Vim模擬器開啟時有效。
3. 行號定位
普 通模式下輸入 行號G 或 :行號<回車> 都能快速定位到某一行黄绩。區(qū)別在于前者在輸入行號時屏幕上沒有任何提示羡洁,后者則在Vim命令輸入框中可以看到輸入過程。(題外話:Sublime Text 2也是用 :行號 來快速定位到某行宝与,應(yīng)該是沿用了Vim的習(xí)慣)
4. 進(jìn)入修改
進(jìn)入插入模式的方式有很多焚廊,直接選用合適的方式進(jìn)入插入模式比進(jìn)入后再用箭頭鍵移動光標(biāo)要好。常用的有:
- o - 在當(dāng)前行下方插入新行并自動縮進(jìn)
- O - 在當(dāng)前行上方插入新行并自動縮進(jìn) (普通模式下的大寫字母命令用 shift+字母鍵 輸入习劫,下同)
- i - 在當(dāng)前字符左方開始插入字符
- a - 在當(dāng)前字符右方開始插入字符
- I - 光標(biāo)移動到行首并進(jìn)入插入模式
- A - 光標(biāo)移動到行尾并進(jìn)入插入模式
- s - 刪除光標(biāo)所在字符并進(jìn)入插入模式
- S - 刪除光標(biāo)所在行并進(jìn)入插入模式
- c< 范圍> - 刪除光標(biāo)所在位置周圍某個范圍的文本并進(jìn)入插入模式。關(guān)于范圍請看第5點(diǎn)嚼隘,常用的組合有:caw - 刪除一個單詞包括它后面的空格并開始插入诽里; ciw - 刪除一個單詞并開始插入; ci" - 刪除一個字符串內(nèi)部文本并開始插入飞蛹; c$ - 從光標(biāo)位置刪除到行尾并開始插入谤狡; ct字符 - 從光標(biāo)位置刪除本行某個字符之前(保留該字符)并開始插入。等等卧檐。
- C - 刪除光標(biāo)位置到行尾的內(nèi)容并進(jìn)入插入模式 (相當(dāng)于c$)
- r - 修改光標(biāo)所在字符墓懂,然后返回普通模式
- R - 進(jìn)入覆蓋模式
5. 范圍操作
某些普通模式的動作命令后面可以追加一些表示范圍的指令,表示該動作將作用在整個范圍上霉囚。這類命令常用的有:
- d<范圍> - 刪除一定范圍內(nèi)的文本
- c<范圍> - 刪除一定范圍內(nèi)的文本并進(jìn)入插入模式
- y<范圍> - 將范圍內(nèi)的文本放入0號和"號注冊欄
- v<范圍> - 選擇范圍內(nèi)的文本
- =<范圍> - 自動縮進(jìn)范圍內(nèi)的文本
- gU<范圍> - 將范圍內(nèi)的字符轉(zhuǎn)換為大寫
- gu<范圍> - 將范圍內(nèi)的字符轉(zhuǎn)換為小寫
<范圍> - 將范圍中的內(nèi)容縮進(jìn)一格
- <<范圍> - 將范圍中的內(nèi)容取消縮進(jìn)一格
常用的范圍指令有:
- 空格 - 光標(biāo)所在位置字符捕仔。(例如 gU空格 - 將光標(biāo)位置字符轉(zhuǎn)為大寫)
- 重復(fù)某些動作命令 - 光標(biāo)所在行。 (例如dd刪除一行盈罐,yy復(fù)制一行榜跌,cc刪除一行文本并開始插入,>> 當(dāng)前行縮進(jìn)一格盅粪,==自動縮進(jìn)當(dāng)前行)
- $ - 從光標(biāo)位置到行尾
- ^ - 從光標(biāo)位置到行首钓葫,不包含縮進(jìn)空白
- 0 - 從光標(biāo)位置到行首,包含縮進(jìn)空白
- gg - 從光標(biāo)位置到文件開頭
- G - 從光標(biāo)位置到文件結(jié)尾
- % - 從光標(biāo)位置到另一邊匹配的括號
- f<字符> - 從光標(biāo)位置到光標(biāo)右邊某個字符首次出現(xiàn)的位置票顾,包括該字符
- F<字符> - 從光標(biāo)位置到光標(biāo)左邊某個字符首次出現(xiàn)的位置础浮,包括該字符
- t<字符> - 從光標(biāo)位置到光標(biāo)右邊某個字符首次出現(xiàn)的位置帆调,包括該字符
- F<字符> - 從光標(biāo)位置到光標(biāo)左邊某個字符首次出現(xiàn)的位置,包括該字符
- /正則表達(dá)式 - 從光標(biāo)位置到下一個匹配正則表達(dá)式的位置(跨行)
- ?正則表達(dá)式 - 從光標(biāo)位置到上一個匹配正則表達(dá)式的位置(跨行)
- aw - 一個單詞加一個空格 (a可理解為“一個”豆同,下同)
- iw - 一個單詞 (i可理解為in番刊,下同)
- a" - 一個字符串包括雙引號
- i" - 一個字符串內(nèi)部文本
- a< - 一組< >包含的文本,包括< >號本身
- 同理類推: i<, a[, i[, a(, i(
注意:真正vim中的it范圍(一對xml標(biāo)簽內(nèi)部)在ideaVim中不生效撵枢。
用/或?命令查找時,正則表達(dá)式默認(rèn)大小寫敏感精居,如果需要不敏感锄禽,可以在正則表達(dá)式開始處加上\c標(biāo)志。例如 /\cabc 可以匹配到 ABC靴姿。下面提到的:s命令同樣適用沃但。
6. 選擇文本
在Vim中,選擇文本需要進(jìn)入“可視模式”(Visual Mode)佛吓,這個名稱比較奇怪宵晚,它的來由據(jù)說是因?yàn)樵赩im的前身Vi中,選擇區(qū)域是不可見的维雇。在Vim中選擇區(qū)域會高亮顯示淤刃,因此稱為“可視模式”。
- v - 進(jìn)入字符選擇模式吱型, V - 進(jìn)入行選擇模式逸贾, Ctrl+v - 進(jìn)入塊選擇模式。
進(jìn)入相應(yīng)模式后移動光標(biāo)即可選中文本津滞。過程中可按o鍵令光標(biāo)在選區(qū)兩端切換铝侵。
在塊選擇模式中選中多行,然后按I或A后輸入文本触徐,再退出插入模式咪鲜,所輸入的文本將自動加入到每一行的開頭或結(jié)尾。
7. 復(fù)制粘貼
在 Vim模式下撞鹉,復(fù)制粘貼并不直接使用系統(tǒng)的剪貼板疟丙,而是使用Vim提供的多個“寄存器”,每個寄存器都以一個字符來表示孔祸。關(guān)于寄存器的詳細(xì)說明可以看這里 http://blah.blogsome.com/2006/04/27/vim_tut_register/ (隨便google的一個網(wǎng)頁)隆敢,這里簡單列一些常用的操作技巧 (注意,vim使用雙引號"來作為選擇寄存器的命令崔慧,因此下文中的雙引號均指在普通模式下按雙引號鍵):
a)用y命令將文本存入寄存器后拂蝎,如果想在別處替換原有內(nèi)容,可以先用v命令選中原有內(nèi)容惶室,然后用p命令粘貼温自。但第一次粘貼后玄货,默認(rèn)的寄存器 "將被替換為剛剛刪除的內(nèi)容。如果要再次粘貼之前復(fù)制的內(nèi)容悼泌,需要使用 "0p 命令組合來復(fù)制松捉。也可以進(jìn)入插入模式后用 Ctrl+r 0 來復(fù)制,例如 ciw<Ctrl+r>0 命令組合將用粘貼內(nèi)容替換光標(biāo)處的一個單詞馆里,并停留在插入模式隘世。
b)在Windows下,寄存器 + 和 * 都代表系統(tǒng)剪貼板鸠踪,可以互換使用丙者,選一個順手的即可。例如 "+yy 命令組合可將當(dāng)前行復(fù)制到系統(tǒng)剪貼板营密。 ci"<Ctrl+r>* 命令組合則將系統(tǒng)剪貼板的內(nèi)容替換字符串的內(nèi)部文本械媒。
c) 寄存器1至9記錄之前九次的刪除大段文本,每次超過一行的刪除操作都會導(dǎo)致這9個寄存器的內(nèi)容發(fā)生位移评汰,最近刪除的文本會存入寄存器1纷捞。但只有刪除超過1 行時才會影響寄存器1至9,行內(nèi)的刪除內(nèi)容則會被存入寄存器-(減號)被去。如果用q命令錄制宏時不涉及跨行刪除主儡,可以在宏中直接使用這9個寄存器來暫存文 本。(在Vim中惨缆,復(fù)制內(nèi)容與錄制宏共享同一套寄存器缀辩,因此我習(xí)慣把字母寄存器留給宏使用)
d) 普通模式下小寫p把寄存器內(nèi)容復(fù)制到當(dāng)前位置之后,大寫P把寄存器內(nèi)容復(fù)制到當(dāng)前位置之前踪央。
e) 使用 :regs 命令可以列出當(dāng)前所有寄存器的內(nèi)容
8. 一些插入模式下的常用快捷鍵
- Ctrl+h - 刪除光標(biāo)左邊字符
- Ctrl+w - 刪除光標(biāo)左邊的單詞
- Ctrl+y - 復(fù)制上方的一個字符
- Ctrl+e - 復(fù)制下方的一個字符
- Ctrl+r 0 - 插入前一次用y命令寄存的內(nèi)容
- Ctrl+r * - 插入系統(tǒng)剪貼板的內(nèi)容
- Ctrl+r <寄存器名稱> - 插入指定寄存器的內(nèi)容
- Ctrl+a - 插入前一次插入模式所鍵入的內(nèi)容
- Ctrl+o - 執(zhí)行一個普通模式下的命令然后返回插入模式。 例如 Ctrl+o A 相當(dāng)于按 End鍵瓢阴, Ctrl+o I相當(dāng)于按Home鍵
9. 退出插入模式
退出插入模式可以用 ESC 鍵畅蹂,但鍵位太遠(yuǎn)。其實(shí)也可以用 Ctrl+[ 鍵退出插入模式 荣恐。當(dāng)然也可以用第1點(diǎn)自定義的Ctrl+;快捷鍵液斜,但這不是標(biāo)準(zhǔn)vim按鍵,會養(yǎng)成不良習(xí)慣叠穆,不建議使用少漆。
10. 重復(fù)操作
普通模式下按. (小數(shù)點(diǎn))可重復(fù)上一次的修改操作
- & - 重復(fù)上一次的:s替換命令
- @@ - 重復(fù)上一次執(zhí)行的宏
11. 跳轉(zhuǎn)
- Ctrl+] 跳轉(zhuǎn)到當(dāng)前標(biāo)識符的定義位置 (相當(dāng)于在當(dāng)前光標(biāo)位置的單詞上按住ctrl用鼠標(biāo)點(diǎn)擊)
- Ctrl+o 回退一步 (go back)
- Ctrl+i 前進(jìn)一步 (go forward)
- `. 跳轉(zhuǎn)到之前修改位置
- `` 在前一次跳轉(zhuǎn)位置與當(dāng)前位置間切換
- 行號G 或 :行號<回車> 跳轉(zhuǎn)到某一行
- gg 跳轉(zhuǎn)到文件開頭
- G 跳轉(zhuǎn)到文件末尾
- H 跳轉(zhuǎn)到屏幕頂端(如果設(shè)置了set so=n,則跳轉(zhuǎn)到第n行)
- L 跳轉(zhuǎn)到屏幕底端(如果設(shè)置了set so=n硼被,則跳轉(zhuǎn)到倒數(shù)第n行)
- M 跳轉(zhuǎn)到屏幕中間
- f 或 F 跳轉(zhuǎn)到本行某個字符示损,小寫f向右查找,大寫F向左查找嚷硫。用;或,在匹配間切換
- t 或 T 跳轉(zhuǎn)到本行某個字符之前检访,小寫t向右查找始鱼,大寫T向左查找。用;或,在匹配間切換
- /正則表達(dá)式 跳轉(zhuǎn)到下一個匹配脆贵。用n或N在匹配間切換医清。
- ?正則表達(dá)式 跳轉(zhuǎn)到上一個匹配。用n或N在匹配間切換卖氨。
(結(jié)合前面第5點(diǎn)会烙,你也許注意到了,在指定范圍時筒捺,使用跳轉(zhuǎn)命令將指定一個從光標(biāo)位置到跳轉(zhuǎn)目標(biāo)的區(qū)域)
12 書簽
在 普通模式下按 m<小寫字母> 即可定義書簽柏腻,按 `<字母> 則可跳轉(zhuǎn)到某個書簽的精確位置,按 '<字母>可跳轉(zhuǎn)到某個書簽所在行的行首(用來錄制宏時比較有用)焙矛。最常用的自然是mm, mn, mj, mk, ml這幾個順手的鍵位葫盼。
真正的vim中的全局書簽 m<大寫字母> 在目前IdeaVim版本中不生效。需要定義全局書簽可以使用Idea原本的 F11 + 數(shù)字 方式
13 文本替換
- 使用 :s/正則表達(dá)式/替換文本/ 可在本行內(nèi)替換首次出現(xiàn)的匹配
- 使用 :s/正則表達(dá)式/替換文本/g 在本行內(nèi)替換所有出現(xiàn)的匹配
- 使用 :%s/正則表達(dá)式/替換文本/g 在當(dāng)前文件內(nèi)替換所有出現(xiàn)的匹配
在 可視模式下選中文本后村斟,使用:'<,'>s/正則表達(dá)式/替換文本/g 命令可在選中區(qū)域中替換文本贫导。其中'<,'>部分在可視模式下,按:冒號后自動加入蟆盹,直接輸入s命令即可孩灯。但有效區(qū)域只能以行為單位。真正 Vim中的 %V 標(biāo)志在IdeaVim中不生效逾滥。
- 11 代碼折疊
- zo - 打開折疊
- zc - 關(guān)閉折疊
14 宏定義
在 IdeaVim中定義宏比Idea自帶的宏功能要輕量許多峰档。按在普通模式下 q<寄存器名稱> 即可開始把后續(xù)按鍵序列錄制到指定寄存器中(寄存器參考前面第7條)。錄制完畢進(jìn)入普通模式再按q鍵即可停止錄制寨昙。之后用 @<寄存器名稱> 即可重放讥巡。需要注意的是宏和復(fù)制粘貼共用一套寄存器,因此在錄制宏時就注意不要把當(dāng)前宏正在使用的寄存器用來復(fù)制了舔哪。寄存器內(nèi)容是自動保存的欢顷,重啟 Idea仍然生效。但I(xiàn)deaVim沒有導(dǎo)出宏獨(dú)立保存的功能捉蚤。因此最好把用來保存宏的寄存器和用來復(fù)制粘貼的寄存器分開抬驴,不要同一個寄存器有時用來記錄 宏,有時用來復(fù)制粘貼缆巧。我的習(xí)慣是鍵盤左手區(qū)用來保存一些長期使用的宏(比如說我有一個宏專門用來把pom.xml中的版本號抽取到property區(qū) 域布持,原來的位置則改用${property}引用)。右手區(qū)的hjklnm鍵用來保存一些臨時宏陕悬。yuiop五個寄存器保留用來復(fù)制粘貼题暖。如果錄制的宏不 涉及刪除大段代碼,寄存器1至9也可以用來進(jìn)行復(fù)制粘貼。
執(zhí)行一次宏后芙委,可以用@@命令重復(fù)上一次執(zhí)行的宏逞敷。
在Idea 中錄制宏時,如果觸發(fā)了代碼自動完成灌侣,在自動完成列表啟動的狀態(tài)輸入的字符不會被記錄推捐。因此最好在Setting -> Code Completion -> Autopopup code completion中把延遲設(shè)為500ms以上或干脆關(guān)掉。在錄制宏的過程中避免觸發(fā)代碼自動完成功能侧啼。
錄制一些長期有效的宏時牛柒,開始錄制后,最好先用0痊乾,^皮壁,T, F, $等命令把光標(biāo)對齊到行首行末或某個特定起始位置(比如說用 F" 跳轉(zhuǎn)到字符串的左邊引號),再用一個f或/指令跳轉(zhuǎn)到操作位置哪审,這樣的宏就不用必須把光標(biāo)放在某個特定字符才能使用了蛾魄。
15. 一些常用組合技
- 全選: ggvG
- 調(diào)換兩個字符位置: xp
- 復(fù)制一行: yyp
- 調(diào)換兩行位置: ddp
- 插入模式下到行尾繼續(xù)輸入(相當(dāng)于End鍵): Ctrl+o A 或 Ctrl+[ A
- 插入模式下到行首繼續(xù)輸入(相當(dāng)于Home鍵): Ctrl+o I 或 Ctrl+[ I
- 到類定義位置(適用于正確縮進(jìn)的public,protected類) : ?^p回車
16. 一些在目前版本已知沒有實(shí)現(xiàn)的一些常用Vim功能
(如果對Vim不熟悉可以跳過這節(jié))
- a)let命令 (沒有l(wèi)et命令就無法導(dǎo)出/導(dǎo)入寄存器內(nèi)容湿滓,也就是無法導(dǎo)入宏)
- b):g命令 (在文本處理中很有用的一個命令滴须,在編程中倒是不那么常用)
- c)!命令 (執(zhí)行shell命令)
- d)大部分正則表達(dá)式標(biāo)記 (例如 %V, \v 等等)
- e) 某些多鍵命令雙擊最后一個字符表示作用于當(dāng)前行叽奥。例如在Vim中g(shù)UU可以把當(dāng)前行轉(zhuǎn)換為大寫扔水,在IdeaVim中無效,實(shí)現(xiàn)同樣功能可以先用V命令選中當(dāng)前行朝氓,再用gU轉(zhuǎn)換為大寫魔市。
- f)關(guān)于窗口操作的大部分命令 (Ctrl+w系列命令, :split等)
- g)所有Vim腳本插件 (不過大部分可以用Idea自身的功能和插件來補(bǔ)償)
嗯,差點(diǎn)忘了赵哲,在普通模式下按u撤銷上一個修改(相當(dāng)于其他IDE的Ctrl+z)待德,按Ctrl+r重做被撤銷的修改。
http://my.oschina.net/pureboys/blog/182211](http://my.oschina.net/pureboys/blog/182211