鏇剧粡鍦ㄦ�濈鐨勫伐鍘傛祴璇曠郴缁焋KlemTest` (`SUSE`鍛戒护琛屾ā寮�)涓娇鐢╜VI`/`VIM`瓒呰繃2骞村崐锛岀幇鍦ㄧ殑宸ヤ綔浣跨敤Mac锛屼絾涓嶆椂杩橀渶瑕佺敤鍒癡IM (SUSE涓婄殑VIM浣跨敤璧锋潵姣擬ac/Ubuntu涓嶅悓锛孲USE鐜涓嬶紝鏈塊lemTest涓娇鐢╒I寰堟湁鑺傚鎰燂紝杩欎釜濂芥瘮鏈烘閿洏闈掕酱; 鑰孧ac/Ubuntu缁堢涓嬩娇鐢╒I鏃讹紝寰堢伒鍔�)锛屾晠鍦ㄧ綉涓婃壘浜嗘瘮杈冮綈鍏ㄧ殑VI/VIM蹇嵎閿殑鏂囩珷銆�
绱�
##1. 鍏充簬Vim
vim鏄垜鏈�鍠滄鐨勭紪杈戝櫒锛屼篃鏄痩inux涓嬬浜屽己澶х殑缂栬緫鍣ㄣ�� 铏界劧emacs鏄叕璁ょ殑涓栫晫绗竴锛屾垜璁や负浣跨敤emacs骞舵病鏈変娇鐢╲i杩涜缂栬緫鏉ュ緱楂樻晥銆� 濡傛灉鏄垵瀛i锛岃繍琛屼竴涓媣imtutor鏄釜鑱槑鐨勫喅瀹氥�� 锛堝鏋滀綘鐨勭郴缁熺幆澧冧笉鏄腑鏂囷紝鑰屼綘鎯充娇鐢ㄤ腑鏂囩殑vimtutor锛屽氨杩愯vimtutor zh锛�
###1.1 Vim鐨勫嚑绉嶆ā寮�
姝e父妯″紡锛氬彲浠ヤ娇鐢ㄥ揩鎹烽敭鍛戒护锛屾垨鎸�:杈撳叆鍛戒护琛屻��
鎻掑叆妯″紡锛氬彲浠ヨ緭鍏ユ枃鏈紝鍦ㄦ甯告ā寮忎笅锛屾寜`i`銆乣a`銆乣o`绛夐兘鍙互杩涘叆鎻掑叆妯″紡銆�
鍙妯″紡锛氭甯告ā寮忎笅鎸塦v`鍙互杩涘叆鍙妯″紡锛� 鍦ㄥ彲瑙嗘ā寮忎笅锛岀Щ鍔ㄥ厜鏍囧彲浠ラ�夋嫨鏂囨湰銆傛寜`V`杩涘叆鍙琛屾ā寮忥紝 鎬绘槸鏁磋鏁磋鐨勯�変腑銆俙ctrl+v`杩涘叆鍙鍧楁ā寮忋��
鏇挎崲妯″紡锛氭甯告ā寮忎笅锛屾寜R杩涘叆銆�
##2. 鍚姩Vim
`vim -c cmd file`: 鍦ㄦ墦寮�鏂囦欢鍓嶏紝鍏堟墽琛屾寚瀹氱殑鍛戒护锛�
`vim -r file`: 鎭㈠涓婃寮傚父閫�鍑虹殑鏂囦欢锛�
`vim -R file`: 浠ュ彧璇荤殑鏂瑰紡鎵撳紑鏂囦欢锛屼絾鍙互寮哄埗淇濆瓨锛�
`vim -M file`: 浠ュ彧璇荤殑鏂瑰紡鎵撳紑鏂囦欢锛屼笉鍙互寮哄埗淇濆瓨锛�
`vim -y num file`: 灏嗙紪杈戠獥鍙g殑澶у皬璁句负num琛岋紱
`vim + file`: 浠庢枃浠剁殑鏈熬寮�濮嬶紱
`vim +num file`: 浠庣num琛屽紑濮嬶紱
`vim +/string file`: 鎵撳紑file锛屽苟灏嗗厜鏍囧仠鐣欏湪绗竴涓壘鍒扮殑string涓娿��
`vim --remote file`: 鐢ㄥ凡鏈夌殑vim杩涚▼鎵撳紑鎸囧畾鐨勬枃浠躲�� 濡傛灉浣犱笉鎯冲惎鐢ㄥ涓獀im浼氳瘽锛岃繖涓緢鏈夌敤銆備絾瑕佹敞鎰忥紝 濡傛灉浣犵敤vim锛屼細瀵绘壘鍚嶅彨VIM鐨勬湇鍔″櫒锛涘鏋滀綘宸茬粡鏈変竴涓猤vim鍦ㄨ繍琛屼簡锛� 浣犲彲浠ョ敤gvim --remote file鍦ㄥ凡鏈夌殑gvim涓墦寮�鏂囦欢銆�
###3. 鏂囨。鎿嶄綔
`:e file` --鍏抽棴褰撳墠缂栬緫鐨勬枃浠讹紝骞跺紑鍚柊鐨勬枃浠躲�� 濡傛灉瀵瑰綋鍓嶆枃浠剁殑淇敼鏈繚瀛橈紝vi浼氳鍛娿��
`:e! file` --鏀惧純瀵瑰綋鍓嶆枃浠剁殑淇敼锛岀紪杈戞柊鐨勬枃浠躲��
`:e+file` -- 寮�濮嬫柊鐨勬枃浠讹紝骞朵粠鏂囦欢灏惧紑濮嬬紪杈戙��
`:e+n file -- 寮�濮嬫柊鐨勬枃浠讹紝骞朵粠绗琻琛屽紑濮嬬紪杈戙��
:enew --缂栬瘧涓�涓湭鍛藉悕鐨勬柊鏂囨。銆�(CTRL-W n)
:e -- 閲嶆柊鍔犺浇褰撳墠鏂囨。銆�
:e! -- 閲嶆柊鍔犺浇褰撳墠鏂囨。锛屽苟涓㈠純宸插仛鐨勬敼鍔ㄣ��
:e#鎴朿trl+^ -- 鍥炲埌鍒氭墠缂栬緫鐨勬枃浠讹紝寰堝疄鐢ㄣ��
:f鎴朿trl+g -- 鏄剧ず鏂囨。鍚嶏紝鏄惁淇敼锛屽拰鍏夋爣浣嶇疆銆�
:f filename -- 鏀瑰彉缂栬緫鐨勬枃浠跺悕锛岃繖鏃跺啀淇濆瓨鐩稿綋浜庡彟瀛樹负銆�
gf -- 鎵撳紑浠ュ厜鏍囨墍鍦ㄥ瓧绗︿覆涓烘枃浠跺悕鐨勬枃浠躲��
:w -- 淇濆瓨淇敼銆�
:n1,n2w filename -- 閫夋嫨鎬т繚瀛樹粠鏌恘1琛屽埌鍙2琛岀殑鍐呭銆�
:wq -- 淇濆瓨骞堕��鍑恒��
ZZ -- 淇濆瓨骞堕��鍑恒��
:x -- 淇濆瓨骞堕��鍑恒��
:q[uit] 鈥斺�旈��鍑哄綋鍓嶇獥鍙c��(CTRL-W q鎴朇TRL-W CTRL-Q)
:saveas newfilename -- 鍙﹀瓨涓�
:browse e -- 浼氭墦寮�涓�涓枃浠舵祻瑙堝櫒璁╀綘閫夋嫨瑕佺紪杈戠殑鏂囦欢銆� 濡傛灉鏄粓绔腑锛屽垯浼氭墦寮�netrw鐨勬枃浠舵祻瑙堢獥鍙o紱 濡傛灉鏄痝vim锛屽垯浼氭墦寮�涓�涓浘褰㈢晫闈㈢殑娴忚绐楀彛銆� 瀹為檯涓�:browse鍚庡彲浠ヨ窡浠讳綍缂栬緫鏂囨。鐨勫懡浠わ紝濡俿p绛夈�� 鐢╞rowse鎵撳紑鐨勮捣濮嬬洰褰曞彲浠ョ敱browsedir鏉ヨ缃細
:set browsedir=last -- 鐢ㄤ笂娆¤闂繃鐨勭洰褰曪紙榛樿锛夛紱
:set browsedir=buffer -- 鐢ㄥ綋鍓嶆枃浠舵墍鍦ㄧ洰褰曪紱
:set browsedir=current -- 鐢ㄥ綋鍓嶅伐浣滅洰褰曪紱
:Sex -- 姘村钩鍒嗗壊涓�涓獥鍙o紝娴忚鏂囦欢绯荤粺锛�
:Vex -- 鍨傜洿鍒嗗壊涓�涓獥鍙o紝娴忚鏂囦欢绯荤粺锛�
##4. 鍏夋爣鐨勭Щ鍔�
###4.1 鍩烘湰绉诲姩
浠ヤ笅绉诲姩閮芥槸鍦╪ormal妯″紡涓嬨��
h鎴栭��鏍�: 宸︾Щ涓�涓瓧绗︼紱
l鎴栫┖鏍�: 鍙崇Щ涓�涓瓧绗︼紱
j: 涓嬬Щ涓�琛岋紱
k: 涓婄Щ涓�琛岋紱
gj: 绉诲姩鍒颁竴娈靛唴鐨勪笅涓�琛岋紱
gk: 绉诲姩鍒颁竴娈靛唴鐨勪笂涓�琛岋紱
+鎴朎nter: 鎶婂厜鏍囩Щ鑷充笅涓�琛岀涓�涓潪绌虹櫧瀛楃銆�
-: 鎶婂厜鏍囩Щ鑷充笂涓�琛岀涓�涓潪绌虹櫧瀛楃銆�
w: 鍓嶇Щ涓�涓崟璇嶏紝鍏夋爣鍋滃湪涓嬩竴涓崟璇嶅紑澶达紱
W: 绉诲姩涓嬩竴涓崟璇嶅紑澶达紝浣嗗拷鐣ヤ竴浜涙爣鐐癸紱
e: 鍓嶇Щ涓�涓崟璇嶏紝鍏夋爣鍋滃湪涓嬩竴涓崟璇嶆湯灏撅紱
E: 绉诲姩鍒颁笅涓�涓崟璇嶆湯灏撅紝濡傛灉璇嶅熬鏈夋爣鐐癸紝鍒欑Щ鍔ㄥ埌鏍囩偣锛�
b: 鍚庣Щ涓�涓崟璇嶏紝鍏夋爣鍋滃湪涓婁竴涓崟璇嶅紑澶达紱
B: 绉诲姩鍒颁笂涓�涓崟璇嶅紑澶达紝蹇界暐涓�浜涙爣鐐癸紱
ge: 鍚庣Щ涓�涓崟璇嶏紝鍏夋爣鍋滃湪涓婁竴涓崟璇嶆湯灏撅紱
gE: 鍚実e锛屼笉杩団�樺崟璇嶁�欏寘鍚崟璇嶇浉閭荤殑鏍囩偣銆�
(: 鍓嶇Щ1鍙ャ��
): 鍚庣Щ1鍙ャ��
{: 鍓嶇Щ1娈点��
}: 鍚庣Щ1娈点��
fc: 鎶婂厜鏍囩Щ鍒板悓涓�琛岀殑涓嬩竴涓猚瀛楃澶�
Fc: 鎶婂厜鏍囩Щ鍒板悓涓�琛岀殑涓婁竴涓猚瀛楃澶�
tc: 鎶婂厜鏍囩Щ鍒板悓涓�琛岀殑涓嬩竴涓猚瀛楃鍓�
Tc: 鎶婂厜鏍囩Щ鍒板悓涓�琛岀殑涓婁竴涓猚瀛楃鍚�
;: 閰嶅悎f & t浣跨敤锛岄噸澶嶄竴娆�
,: 閰嶅悎f & t浣跨敤锛屽弽鍚戦噸澶嶄竴娆�
涓婇潰鐨勬搷浣滈兘鍙互閰嶅悎n浣跨敤锛屾瘮濡傚湪姝e父妯″紡(涓嬮潰浼氳鍒�)涓嬭緭鍏�3h锛� 鍒欏厜鏍囧悜宸︾Щ鍔�3涓瓧绗︺��
0: 绉诲姩鍒拌棣栥��
g0: 绉诲埌鍏夋爣鎵�鍦ㄥ睆骞曡琛岄銆�
^: 绉诲姩鍒版湰琛岀涓�涓潪绌虹櫧瀛楃銆�
g^: 鍚宆锛屼絾鏄Щ鍔ㄥ埌褰撳墠灞忓箷琛岀涓�涓潪绌哄瓧绗﹀銆�
$: 绉诲姩鍒拌灏俱��
g$: 绉诲姩鍏夋爣鎵�鍦ㄥ睆骞曡琛屽熬銆�
n|: 鎶婂厜鏍囩Щ鍒伴�抧鍒椾笂銆�
nG: 鍒版枃浠剁n琛屻��
:n 绉诲姩鍒扮n琛屻��
:$ 绉诲姩鍒版渶鍚庝竴琛屻��
H: 鎶婂厜鏍囩Щ鍒板睆骞曟渶椤剁涓�琛屻��
M: 鎶婂厜鏍囩Щ鍒板睆骞曚腑闂翠竴琛屻��
L: 鎶婂厜鏍囩Щ鍒板睆骞曟渶搴曠涓�琛屻��
gg: 鍒版枃浠跺ご閮ㄣ��
G: 鍒版枃浠跺熬閮ㄣ��
###4.2 缈诲睆
ctrl+f: 涓嬬炕涓�灞忋��
ctrl+b: 涓婄炕涓�灞忋��
ctrl+d: 涓嬬炕鍗婂睆銆�
ctrl+u: 涓婄炕鍗婂睆銆�
ctrl+e: 鍚戜笅婊氬姩涓�琛屻��
ctrl+y: 鍚戜笂婊氬姩涓�琛屻��
n%: 鍒版枃浠秐%鐨勪綅缃��
zz: 灏嗗綋鍓嶈绉诲姩鍒板睆骞曚腑澶��
zt: 灏嗗綋鍓嶈绉诲姩鍒板睆骞曢《绔��
zb: 灏嗗綋鍓嶈绉诲姩鍒板睆骞曞簳绔��
###4.3 鏍囪
浣跨敤鏍囪鍙互蹇�熺Щ鍔ㄣ�傚埌杈炬爣璁板悗锛屽彲浠ョ敤Ctrl+o杩斿洖鍘熸潵鐨勪綅缃�� Ctrl+o鍜孋trl+i 寰堝儚娴忚鍣ㄤ笂鐨勫悗閫�鍜屽墠杩涖��
m{a-z}: 鏍囪鍏夋爣鎵�鍦ㄤ綅缃紝灞�閮ㄦ爣璁帮紝鍙敤浜庡綋鍓嶆枃浠躲��
m{A-Z}: 鏍囪鍏夋爣鎵�鍦ㄤ綅缃紝鍏ㄥ眬鏍囪銆傛爣璁颁箣鍚庯紝閫�鍑篤im锛� 閲嶆柊鍚姩锛屾爣璁颁粛鐒舵湁鏁堛��
`{a-z}: 绉诲姩鍒版爣璁颁綅缃��
'{a-z}: 绉诲姩鍒版爣璁拌鐨勮棣栥��
`{0-9}锛氬洖鍒颁笂[2-10]娆″叧闂璿im鏃舵渶鍚庣寮�鐨勪綅缃��
``: 绉诲姩鍒颁笂娆$紪杈戠殑浣嶇疆銆�''涔熷彲浠ワ紝涓嶈繃``绮剧‘鍒板垪锛岃��''绮剧‘鍒拌 銆傚鏋滄兂璺宠浆鍒版洿鑰佺殑浣嶇疆锛屽彲浠ユ寜C-o锛岃烦杞埌鏇存柊鐨勪綅缃敤C-i銆�
`": 绉诲姩鍒颁笂娆$寮�鐨勫湴鏂广��
`.: 绉诲姩鍒版渶鍚庢敼鍔ㄧ殑鍦版柟銆�
:marks 鏄剧ず鎵�鏈夋爣璁般��
:delmarks a b -- 鍒犻櫎鏍囪a鍜宐銆�
:delmarks a-c -- 鍒犻櫎鏍囪a銆乥鍜宑銆�
:delmarks a c-f -- 鍒犻櫎鏍囪a銆乧銆乨銆乪銆乫銆�
:delmarks! -- 鍒犻櫎褰撳墠缂撳啿鍖虹殑鎵�鏈夋爣璁般��
:help mark-motions 鏌ョ湅鏇村鍏充簬mark鐨勭煡璇嗐��
##5. 鎻掑叆鏂囨湰
###5.1 鍩烘湰鎻掑叆
i: 鍦ㄥ厜鏍囧墠鎻掑叆锛涗竴涓皬鎶�宸э細鎸�8锛屽啀鎸塱锛岃繘鍏ユ彃鍏ユā寮忥紝杈撳叆=锛� 鎸塭sc杩涘叆鍛戒护妯″紡锛屽氨浼氬嚭鐜�8涓�=銆� 杩欏湪鎻掑叆鍒嗗壊绾挎椂闈炲父鏈夌敤锛屽30i+灏辨彃鍏ヤ簡36涓�+缁勬垚鐨勫垎鍓茬嚎銆�
I: 鍦ㄥ綋鍓嶈绗竴涓潪绌哄瓧绗﹀墠鎻掑叆锛�
gI: 鍦ㄥ綋鍓嶈绗竴鍒楁彃鍏ワ紱
a: 鍦ㄥ厜鏍囧悗鎻掑叆锛�
A: 鍦ㄥ綋鍓嶈鏈�鍚庢彃鍏ワ紱
o: 鍦ㄤ笅闈㈡柊寤轰竴琛屾彃鍏ワ紱
O: 鍦ㄤ笂闈㈡柊寤轰竴琛屾彃鍏ワ紱
:r filename鍦ㄥ綋鍓嶄綅缃彃鍏ュ彟涓�涓枃浠剁殑鍐呭銆�
:[n]r filename鍦ㄧn琛屾彃鍏ュ彟涓�涓枃浠剁殑鍐呭銆�
:r !date 鍦ㄥ厜鏍囧鎻掑叆褰撳墠鏃ユ湡涓庢椂闂淬�傚悓鐞嗭紝:r !command鍙互灏嗗叾瀹僺hell鍛戒护鐨勮緭鍑烘彃鍏ュ綋鍓嶆枃妗c��
##5.2 鏀瑰啓鎻掑叆
c[n]w: 鏀瑰啓鍏夋爣鍚�1(n)涓瘝銆�
c[n]l: 鏀瑰啓鍏夋爣鍚巒涓瓧姣嶃��
c[n]h: 鏀瑰啓鍏夋爣鍓峮涓瓧姣嶃��
[n]cc: 淇敼褰撳墠[n]琛屻��
[n]s: 浠ヨ緭鍏ョ殑鏂囨湰鏇夸唬鍏夋爣涔嬪悗1(n)涓瓧绗︼紝鐩稿綋浜巆[n]l銆�
[n]S: 鍒犻櫎鎸囧畾鏁扮洰鐨勮锛屽苟浠ユ墍杈撳叆鏂囨湰浠f浛涔嬨��
娉ㄦ剰锛岀被浼糲nw,dnw,ynw鐨勫舰寮忓悓鏍峰彲浠ュ啓涓簄cw,ndw,nyw銆�
##6. 鍓垏澶嶅埗鍜屽瘎瀛樺櫒
###6.1 鍓垏鍜屽鍒躲�佺矘璐�
[n]x: 鍓垏鍏夋爣鍙宠竟n涓瓧绗︼紝鐩稿綋浜巇[n]l銆�
[n]X: 鍓垏鍏夋爣宸﹁竟n涓瓧绗︼紝鐩稿綋浜巇[n]h銆�
y: 澶嶅埗鍦ㄥ彲瑙嗘ā寮忎笅閫変腑鐨勬枃鏈��
yy or Y: 澶嶅埗鏁磋鏂囨湰銆�
y[n]w: 澶嶅埗涓�(n)涓瘝銆�
y[n]l: 澶嶅埗鍏夋爣鍙宠竟1(n)涓瓧绗︺��
y[n]h: 澶嶅埗鍏夋爣宸﹁竟1(n)涓瓧绗︺��
y$: 浠庡厜鏍囧綋鍓嶄綅缃鍒跺埌琛屽熬銆�
y0: 浠庡厜鏍囧綋鍓嶄綅缃鍒跺埌琛岄銆�
:m,ny 澶嶅埗m琛屽埌n琛岀殑鍐呭銆�
y1G鎴杫gg: 澶嶅埗鍏夋爣浠ヤ笂鐨勬墍鏈夎銆�
yG: 澶嶅埗鍏夋爣浠ヤ笅鐨勬墍鏈夎銆�
yaw鍜寉as锛氬鍒朵竴涓瘝鍜屽鍒朵竴涓彞瀛愶紝鍗充娇鍏夋爣涓嶅湪璇嶉鍜屽彞棣栦篃娌″叧绯汇��
d: 鍒犻櫎锛堝壀鍒囷級鍦ㄥ彲瑙嗘ā寮忎笅閫変腑鐨勬枃鏈��
d$ or D: 鍒犻櫎锛堝壀鍒囷級褰撳墠浣嶇疆鍒拌灏剧殑鍐呭銆�
d[n]w: 鍒犻櫎锛堝壀鍒囷級1(n)涓崟璇�
d[n]l: 鍒犻櫎锛堝壀鍒囷級鍏夋爣鍙宠竟1(n)涓瓧绗︺��
d[n]h: 鍒犻櫎锛堝壀鍒囷級鍏夋爣宸﹁竟1(n)涓瓧绗︺��
d0: 鍒犻櫎锛堝壀鍒囷級褰撳墠浣嶇疆鍒拌棣栫殑鍐呭
[n] dd: 鍒犻櫎锛堝壀鍒囷級1(n)琛屻��
:m,nd 鍓垏m琛屽埌n琛岀殑鍐呭銆�
d1G鎴杁gg: 鍓垏鍏夋爣浠ヤ笂鐨勬墍鏈夎銆�
dG: 鍓垏鍏夋爣浠ヤ笅鐨勬墍鏈夎銆�
daw鍜宒as锛氬壀鍒囦竴涓瘝鍜屽壀鍒囦竴涓彞瀛愶紝鍗充娇鍏夋爣涓嶅湪璇嶉鍜屽彞棣栦篃娌″叧绯汇��
d/f锛氳繖鏄竴涓瘮杈冮珮绾х殑缁勫悎鍛戒护锛屽畠灏嗗垹闄ゅ綋鍓嶄綅缃� 鍒颁笅涓�涓猣涔嬮棿鐨勫唴瀹广��
p: 鍦ㄥ厜鏍囦箣鍚庣矘璐淬��
P: 鍦ㄥ厜鏍囦箣鍓嶇矘璐淬��
###6.2 鏂囨湰瀵硅薄
aw锛氫竴涓瘝
as锛氫竴鍙ャ��
ap锛氫竴娈点��
ab锛氫竴鍧楋紙鍖呭惈鍦ㄥ渾鎷彿涓殑锛夈��
y, d, c, v閮藉彲浠ヨ窡鏂囨湰瀵硅薄銆�
###6.3 瀵勫瓨鍣�
a-z锛氶兘鍙互鐢ㄤ綔瀵勫瓨鍣ㄥ悕銆�"ayy鎶婂綋鍓嶈鐨勫唴瀹规斁鍏瀵勫瓨鍣ㄣ��
A-Z锛氱敤澶у啓瀛楁瘝绱㈠紩瀵勫瓨鍣紝鍙互鍦ㄥ瘎瀛樺櫒涓拷鍔犲唴瀹广�� 濡�"Ayy鎶婂綋鍓嶈鐨勫唴瀹硅拷鍔犲埌a瀵勫瓨鍣ㄤ腑銆�
:reg 鏄剧ず鎵�鏈夊瘎瀛樺櫒鐨勫唴瀹广��
""锛氫笉鍔犲瘎瀛樺櫒绱㈠紩鏃讹紝榛樿浣跨敤鐨勫瘎瀛樺櫒銆�
"*锛氬綋鍓嶉�夋嫨缂撳啿鍖猴紝"*yy鎶婂綋鍓嶈鐨勫唴瀹规斁鍏ュ綋鍓嶉�夋嫨缂撳啿鍖恒��
"+锛氱郴缁熷壀璐存澘銆�"+yy鎶婂綋鍓嶈鐨勫唴瀹规斁鍏ョ郴缁熷壀璐存澘銆�
##7. 鏌ユ壘涓庢浛鎹�
###7.1 鏌ユ壘
/something: 鍦ㄥ悗闈㈢殑鏂囨湰涓煡鎵緎omething銆�
?something: 鍦ㄥ墠闈㈢殑鏂囨湰涓煡鎵緎omething銆�
/pattern/+number: 灏嗗厜鏍囧仠鍦ㄥ寘鍚玴attern鐨勮鍚庨潰绗琻umber琛屼笂銆�
/pattern/-number: 灏嗗厜鏍囧仠鍦ㄥ寘鍚玴attern鐨勮鍓嶉潰绗琻umber琛屼笂銆�
n: 鍚戝悗鏌ユ壘涓嬩竴涓��
N: 鍚戝墠鏌ユ壘涓嬩竴涓��
鍙互鐢╣rep鎴杤imgrep鏌ユ壘涓�涓ā寮忛兘鍦ㄥ摢浜涘湴鏂瑰嚭鐜拌繃锛�
鍏朵腑:grep鏄皟鐢ㄥ閮ㄧ殑grep绋嬪簭锛岃��:vimgrep鏄痸im鑷繁鐨勬煡鎵剧畻娉曘��
鐢ㄦ硶涓猴細 :vim[grep]/pattern/[g] [j] files
g鐨勫惈涔夋槸濡傛灉涓�涓ā寮忓湪涓�琛屼腑澶氭鍑虹幇锛屽垯杩欎竴琛屼篃鍦ㄧ粨鏋滀腑澶氭鍑虹幇銆�
j鐨勫惈涔夋槸grep缁撴潫鍚庯紝缁撴灉鍋滃湪绗琷椤癸紝榛樿鏄仠鍦ㄧ涓�椤广��
vimgrep鍓嶉潰鍙互鍔犳暟瀛楅檺瀹氭悳绱㈢粨鏋滅殑涓婇檺锛屽
:1vim/pattern/ % 鍙煡鎵鹃偅涓ā寮忓湪鏈枃浠朵腑鐨勭涓�涓嚭鐜般��
鍏跺疄vimgrep鍦ㄨ绾枃鏈數瀛愪功鏃剁壒鍒湁鐢紝鍙互鐢熸垚瀵艰埅鐨勭洰褰曘��
姣斿鐢靛瓙涔︿腑姣忎竴鑺傜殑鏍囬褰㈠紡涓猴細n. xxxx銆備綘灏卞彲浠ヨ繖鏍凤細
:vim/^d{1,}./ %
鐒跺悗鐢�:cw鎴�:copen鏌ョ湅缁撴灉锛屽彲浠ョ敤C-w H鎶妐uickfix绐楀彛绉诲埌宸︿晶锛�
灏辨洿鍍忎釜鐩綍浜嗐��
###7.2 鏇挎崲
:s/old/new - 鐢╪ew鏇挎崲褰撳墠琛岀涓�涓猳ld銆�
:s/old/new/g - 鐢╪ew鏇挎崲褰撳墠琛屾墍鏈夌殑old銆�
:n1,n2s/old/new/g - 鐢╪ew鏇挎崲鏂囦欢n1琛屽埌n2琛屾墍鏈夌殑old銆�
:%s/old/new/g - 鐢╪ew鏇挎崲鏂囦欢涓墍鏈夌殑old銆�
:%s/^/xxx/g - 鍦ㄦ瘡涓�琛岀殑琛岄鎻掑叆xxx锛宆琛ㄧず琛岄銆�
:%s/$/xxx/g - 鍦ㄦ瘡涓�琛岀殑琛屽熬鎻掑叆xxx锛�$琛ㄧず琛屽熬銆�
鎵�鏈夋浛鎹㈠懡浠ゆ湯灏惧姞涓奵锛屾瘡涓浛鎹㈤兘灏嗛渶瑕佺敤鎴风‘璁ゃ�� 濡傦細%s/old/new/gc锛屽姞涓奿鍒欏拷鐣ュぇ灏忓啓(ignore)銆�
杩樻湁涓�绉嶆瘮鏇挎崲鏇寸伒娲荤殑鏂瑰紡锛屽畠鏄尮閰嶅埌鏌愪釜妯″紡鍚庢墽琛屾煇绉嶅懡浠わ紝
璇硶涓� :[range]g/pattern/command
渚嬪 :%g/^ xyz/normal dd銆�
琛ㄧず瀵逛簬浠ヤ竴涓┖鏍煎拰xyz寮�澶寸殑琛屾墽琛宯ormal妯″紡涓嬬殑dd鍛戒护銆�
鍏充簬range鐨勮瀹氫负锛�
濡傛灉涓嶆寚瀹歳ange锛屽垯琛ㄧず褰撳墠琛屻��
m,n: 浠巑琛屽埌n琛屻��
0: 鏈�寮�濮嬩竴琛岋紙鍙兘鏄繖鏍凤級銆�
$: 鏈�鍚庝竴琛�
.: 褰撳墠琛�
%: 鎵�鏈夎
###7.3 姝e垯琛ㄨ揪寮�
楂樼骇鐨勬煡鎵炬浛鎹㈠氨瑕佺敤鍒版鍒欒〃杈惧紡銆�
\d: 琛ㄧず鍗佽繘鍒舵暟锛堟垜鐚滅殑锛�
\s: 琛ㄧず绌烘牸
\S: 闈炵┖瀛楃
\a: 鑻辨枃瀛楁瘝
\|: 琛ㄧず 鎴�
\.: 琛ㄧず.
{m,n}: 琛ㄧずm鍒皀涓瓧绗︺�傝繖瑕佸拰 \s涓嶾a绛夎繛鐢紝濡� \a\{m,n} 琛ㄧずm 鍒皀涓嫳鏂囧瓧姣嶃��
{m,}: 琛ㄧずm鍒版棤闄愬涓瓧绗︺��
**: 褰撳墠鐩綍涓嬬殑鎵�鏈夊瓙鐩綍銆�
:help pattern寰楀埌鏇村甯姪銆�
##8. 鎺掔増
###8.1 鍩烘湰鎺掔増
<< 鍚戝乏缂╄繘涓�涓猻hiftwidth
>> 鍚戝彸缂╄繘涓�涓猻hiftwidth
:ce(nter) 鏈鏂囧瓧灞呬腑
:le(ft) 鏈鏂囧瓧闈犲乏
:ri(ght) 鏈鏂囧瓧闈犲彸
gq 瀵归�変腑鐨勬枃瀛楅噸鎺掞紝鍗冲杩囬暱鐨勬枃瀛楄繘琛屾柇琛�
gqq 閲嶆帓褰撳墠琛�
gqnq 閲嶆帓n琛�
gqap 閲嶆帓褰撳墠娈�
gqnap 閲嶆帓n娈�
gqnj 閲嶆帓褰撳墠琛屽拰涓嬮潰n琛�
gqQ 閲嶆帓褰撳墠娈靛鏂囩珷鏈熬
J 鎷兼帴褰撳墠琛屽拰涓嬩竴琛�
gJ 鍚孞锛屼笉杩囧悎骞跺悗涓嶇暀绌烘牸銆�
###8.2 鎷煎啓妫�鏌�
:set spell锛嶅紑鍚嫾鍐欐鏌ュ姛鑳�
:set nospell锛嶅叧闂嫾鍐欐鏌ュ姛鑳�
]s锛嶇Щ鍒颁笅涓�涓嫾鍐欓敊璇殑鍗曡瘝
[s锛嶄綔鐢ㄤ笌涓婁竴鍛戒护绫讳技锛屼絾瀹冩槸浠庣浉鍙嶆柟鍚戣繘琛屾悳绱�
z=锛嶆樉绀轰竴涓湁鍏虫嫾鍐欓敊璇崟璇嶇殑鍒楄〃锛屽彲浠庝腑閫夋嫨
zg锛嶅憡璇夋嫾鍐欐鏌ュ櫒璇ュ崟璇嶆槸鎷煎啓姝g‘鐨�
zw锛嶄笌涓婁竴鍛戒护鐩稿弽锛屽憡璇夋嫾鍐欐鏌ュ櫒璇ュ崟璇嶆槸鎷煎啓閿欒鐨�
###8.3 缁熻瀛楁暟
g ^g鍙互缁熻鏂囨。瀛楃鏁帮紝琛屾暟銆� 灏嗗厜鏍囨斁鍦ㄦ渶鍚庝竴涓瓧绗︿笂锛岀敤瀛楃鏁板噺鍘昏鏁板彲浠ョ矖鐣ョ粺璁′腑鏂囨枃妗g殑瀛楁暟銆� 浠ヤ笂瀵� Mac 鎴� Unix 鐨勬枃浠舵牸寮忛�傜敤銆� 濡傛灉鏄� Windows 鏂囦欢鏍煎紡锛堝嵆鎹㈣绗︽湁涓や釜瀛楄妭锛夛紝瀛楁暟鐨勭粺璁℃柟娉曚负锛� 瀛楃鏁� - 琛屾暟 * 2銆�
##9. 缂栬緫澶氫釜鏂囦欢
###9.1 涓�娆$紪杈戝涓枃浠�
鎴戜滑鍙互涓�娆℃墦寮�澶氫釜鏂囦欢锛屽
vi a.txt b.txt c.txt
浣跨敤:next(:n)缂栬緫涓嬩竴涓枃浠躲��
:2n 缂栬緫涓�2涓枃浠躲��
浣跨敤:previous鎴�:N缂栬緫涓婁竴涓枃浠躲��
浣跨敤:wnext锛屼繚瀛樺綋鍓嶆枃浠讹紝骞剁紪杈戜笅涓�涓枃浠躲��
浣跨敤:wprevious锛屼繚瀛樺綋鍓嶆枃浠讹紝骞剁紪杈戜笂涓�涓枃浠躲��
浣跨敤:args 鏄剧ず鏂囦欢鍒楄〃銆�
:n filenames鎴�:args filenames 鎸囧畾鏂扮殑鏂囦欢鍒楄〃銆�
vi -o filenames 鍦ㄦ按骞冲垎鍓茬殑澶氫釜绐楀彛涓紪杈戝涓枃浠躲��
vi -O filenames 鍦ㄥ瀭鐩村垎鍓茬殑澶氫釜绐楀彛涓紪杈戝涓枃浠躲��
###9.2 澶氭爣绛剧紪杈�
vim -p files: 鎵撳紑澶氫釜鏂囦欢锛屾瘡涓枃浠跺崰鐢ㄤ竴涓爣绛鹃〉銆�
:tabe, tabnew -- 濡傛灉鍔犳枃浠跺悕锛屽氨鍦ㄦ柊鐨勬爣绛句腑鎵撳紑杩欎釜鏂囦欢锛� 鍚﹀垯鎵撳紑涓�涓┖缂撳啿鍖恒��
^w gf -- 鍦ㄦ柊鐨勬爣绛鹃〉閲屾墦寮�鍏夋爣涓嬭矾寰勬寚瀹氱殑鏂囦欢銆�
:tabn -- 鍒囨崲鍒颁笅涓�涓爣绛俱�侰ontrol + PageDown锛屼篃鍙互銆�
:tabp -- 鍒囨崲鍒颁笂涓�涓爣绛俱�侰ontrol + PageUp锛屼篃鍙互銆�
[n] gt -- 鍒囨崲鍒颁笅涓�涓爣绛俱�傚鏋滃墠闈㈠姞浜唍锛� 灏卞垏鎹㈠埌绗琻涓爣绛俱�傜涓�涓爣绛剧殑搴忓彿灏辨槸1銆�
:tab split -- 灏嗗綋鍓嶇紦鍐插尯鐨勫唴瀹瑰湪鏂伴〉绛句腑鎵撳紑銆�
:tabc[lose] -- 鍏抽棴褰撳墠鐨勬爣绛鹃〉銆�
:tabo[nly] -- 鍏抽棴鍏跺畠鐨勬爣绛鹃〉銆�
:tabs -- 鍒楀嚭鎵�鏈夌殑鏍囩椤靛拰瀹冧滑鍖呭惈鐨勭獥鍙c��
:tabm[ove] [N] -- 绉诲姩鏍囩椤碉紝绉诲姩鍒扮N涓爣绛鹃〉涔嬪悗銆� 濡倀abm 0褰撳墠鏍囩椤碉紝灏变細鍙樻垚绗竴涓爣绛鹃〉銆�
###9.3 缂撳啿鍖�
:buffers鎴�:ls鎴�:files 鏄剧ず缂撳啿鍖哄垪琛ㄣ��
ctrl+^锛氬湪鏈�杩戜袱涓紦鍐插尯闂村垏鎹€��
:bn -- 涓嬩竴涓紦鍐插尯銆�
:bp -- 涓婁竴涓紦鍐插尯銆�
:bl -- 鏈�鍚庝竴涓紦鍐插尯銆�
:b[n]鎴�:[n]b -- 鍒囨崲鍒扮n涓紦鍐插尯銆�
:nbw(ipeout) -- 褰诲簳鍒犻櫎绗琻涓紦鍐插尯銆�
:nbd(elete) -- 鍒犻櫎绗琻涓紦鍐插尯锛屽苟鏈湡姝e垹闄わ紝杩樺湪unlisted鍒楄〃涓��
:ba[ll] -- 鎶婃墍鏈夌殑缂撳啿鍖哄湪褰撳墠椤典腑鎵撳紑锛屾瘡涓紦鍐插尯鍗犱竴涓獥鍙c��
##10. 鍒嗗睆缂栬緫
vim -o file1 file2:姘村钩鍒嗗壊绐楀彛锛屽悓鏃舵墦寮�file1鍜宖ile2
vim -O file1 file2:鍨傜洿鍒嗗壊绐楀彛锛屽悓鏃舵墦寮�file1鍜宖ile2
###10.1 姘村钩鍒嗗壊
:split(:sp) -- 鎶婂綋鍓嶇獥姘村钩鍒嗗壊鎴愪袱涓獥鍙c��(CTRL-W s 鎴� CTRL-W CTRL-S) 娉ㄦ剰濡傛灉鍦ㄧ粓绔笅锛孋TRL-S鍙兘浼氬喕缁撶粓绔紝璇锋寜CTRL-Q缁х画銆�
:split filename -- 姘村钩鍒嗗壊绐楀彛锛屽苟鍦ㄦ柊绐楀彛涓樉绀哄彟涓�涓枃浠躲��
:nsplit(:nsp) -- 姘村钩鍒嗗壊鍑轰竴涓猲琛岄珮鐨勭獥鍙c��
:[N]new -- 姘村钩鍒嗗壊鍑轰竴涓狽琛岄珮鐨勭獥鍙o紝骞剁紪杈戜竴涓柊鏂囦欢銆� (CTRL-W n鎴� CTRL-W CTRL-N)
ctrl+w f --姘村钩鍒嗗壊鍑轰竴涓獥鍙o紝骞跺湪鏂扮獥鍙f墦寮�鍚嶇О涓哄厜鏍囨墍鍦ㄨ瘝鐨勬枃浠� 銆�
C-w C-^ -- 姘村钩鍒嗗壊涓�涓獥鍙o紝鎵撳紑鍒氭墠缂栬緫鐨勬枃浠躲��
###10.2 鍨傜洿鍒嗗壊
:vsplit(:vsp) -- 鎶婂綋鍓嶇獥鍙e垎鍓叉垚姘村钩鍒嗗竷鐨勪袱涓獥鍙c�� (CTRL-W v鎴朇TRL CTRL-V)
:[N]vne[w] -- 鍨傜洿鍒嗗壊鍑轰竴涓柊绐楀彛銆�
:vertical 姘村钩鍒嗗壊鐨勫懡浠わ細 鐩稿簲鐨勫瀭鐩村垎鍓层��
###10.3 鍏抽棴瀛愮獥鍙�
:qall -- 鍏抽棴鎵�鏈夌獥鍙o紝閫�鍑簐im銆�
:wall -- 淇濆瓨鎵�鏈変慨鏀硅繃鐨勭獥鍙c��
:only -- 鍙繚鐣欏綋鍓嶇獥鍙o紝鍏抽棴鍏跺畠绐楀彛銆�(CTRL-W o)
:close -- 鍏抽棴褰撳墠绐楀彛锛孋TRL-W c鑳藉疄鐜板悓鏍风殑鍔熻兘銆� (璞� :q :x鍚屾牱宸ヤ綔 )
###10.4 璋冩暣绐楀彛澶у皬
ctrl+w + --褰撳墠绐楀彛澧為珮涓�琛屻�備篃鍙互鐢╪澧為珮n琛屻��
ctrl+w - --褰撳墠绐楀彛鍑忓皬涓�琛屻�備篃鍙互鐢╪鍑忓皬n琛屻��
ctrl+w _ --褰撳墠绐楀彛鎵╁睍鍒板敖鍙兘鐨勫ぇ銆備篃鍙互鐢╪璁惧畾琛屾暟銆�
:resize n -- 褰撳墠绐楀彛n琛岄珮銆�
ctrl+w = -- 鎵�鏈夌獥鍙e悓鏍烽珮搴︺��
n ctrl+w _ -- 褰撳墠绐楀彛鐨勯珮搴﹁瀹氫负n琛屻��
ctrl+w < --褰撳墠绐楀彛鍑忓皯涓�鍒椼�備篃鍙互鐢╪鍑忓皯n鍒椼��
ctrl+w > --褰撳墠绐楀彛澧炲涓�鍒椼�備篃鍙互鐢╪澧炲n鍒椼��
ctrl+w | --褰撳墠绐楀彛灏藉彲鑳界殑瀹姐�備篃鍙互鐢╪璁惧畾鍒楁暟銆�
###10.5 鍒囨崲鍜岀Щ鍔ㄧ獥鍙�
濡傛灉鏀寔榧犳爣锛屽垏鎹㈠拰璋冩暣瀛愮獥鍙g殑澶у皬灏辩畝鍗曚簡銆�
ctrl+w ctrl+w: 鍒囨崲鍒颁笅涓�涓獥鍙c�傛垨鑰呮槸ctrl+w w銆�
ctrl+w p: 鍒囨崲鍒板墠涓�涓獥鍙c��
ctrl+w h(l,j,k):鍒囨崲鍒板乏锛堝彸锛屼笅锛屼笂锛夌殑绐楀彛銆�
ctrl+w t(b):鍒囨崲鍒版渶涓婏紙涓嬶級闈㈢殑绐楀彛銆�
ctrl+w H(L,K,J): 灏嗗綋鍓嶇獥鍙gЩ鍔ㄥ埌鏈�宸︼紙鍙炽�佷笂銆佷笅锛夐潰銆�
ctrl+w r锛氭棆杞獥鍙g殑浣嶇疆銆�
ctrl+w T: 灏嗗綋鍓嶇殑绐楀彛绉诲姩鍒版柊鐨勬爣绛鹃〉涓娿��
##11. 蹇�熺紪杈�
###11.1 鏀瑰彉澶у皬鍐�
~: 鍙嶈浆鍏夋爣鎵�鍦ㄥ瓧绗︾殑澶у皬鍐欍��
鍙妯″紡涓嬬殑U鎴杣锛氭妸閫変腑鐨勬枃鏈彉涓哄ぇ鍐欐垨灏忓啓銆�
gu(U)鎺ヨ寖鍥达紙濡�$锛屾垨G锛夛紝鍙互鎶婁粠鍏夋爣褰撳墠浣嶇疆鍒版寚瀹氫綅缃箣闂村瓧姣嶅叏閮� 杞崲鎴愬皬鍐欐垨澶у啓銆傚ggguG锛屽氨鏄妸寮�澶村埌鏈�鍚庝竴琛屼箣闂寸殑瀛楁瘝鍏ㄩ儴鍙樹负灏� 鍐欍�傚啀濡俫u5j锛屾妸褰撳墠琛屽拰涓嬮潰鍥涜鍏ㄩ儴鍙樻垚灏忓啓銆�
###11.2 鏇挎崲锛坣ormal妯″紡锛�
r: 鏇挎崲鍏夋爣澶勭殑瀛楃锛屽悓鏍锋敮鎸佹眽瀛椼��
R: 杩涘叆鏇挎崲妯″紡锛屾寜esc鍥炲埌姝e父妯″紡銆�
###11.3 鎾ゆ秷涓庨噸鍋氾紙normal妯″紡锛�
[n] u: 鍙栨秷涓�(n)涓敼鍔ㄣ��
:undo 5 -- 鎾ら攢5涓敼鍙樸��
:undolist -- 浣犵殑鎾ら攢鍘嗗彶銆�
ctrl + r: 閲嶅仛鏈�鍚庣殑鏀瑰姩銆�
U: 鍙栨秷褰撳墠琛屼腑鎵�鏈夌殑鏀瑰姩銆�
:earlier 4m -- 鍥炲埌4鍒嗛挓鍓�
:later 55s -- 鍓嶈繘55绉�
###11.4 瀹�
. --閲嶅涓婁竴涓紪杈戝姩浣�
qa锛氬紑濮嬪綍鍒跺畯a锛堥敭鐩樻搷浣滆褰曪級
q锛氬仠姝㈠綍鍒�
@a锛氭挱鏀惧畯a
##12. 缂栬緫鐗规畩鏂囦欢
###12.1 鏂囦欢鍔犺В瀵�
vim -x file: 寮�濮嬬紪杈戜竴涓姞瀵嗙殑鏂囦欢銆�
:X -- 涓哄綋鍓嶆枃浠惰缃瘑鐮併��
:set key= -- 鍘婚櫎鏂囦欢鐨勫瘑鐮併��
杩欓噷鏄粐鐙愭�荤粨鐨勬瘮杈冮珮绾х殑vi鎶�宸с��
###12.2 鏂囦欢鐨勭紪鐮�
:e ++enc=utf8 filename, 璁﹙im鐢╱tf-8鐨勭紪鐮佹墦寮�杩欎釜鏂囦欢銆�
:w ++enc=gbk锛屼笉绠″綋鍓嶆枃浠朵粈涔堢紪鐮侊紝鎶婂畠杞瓨鎴恎bk缂栫爜銆�
:set fenc鎴�:set fileencoding锛屾煡鐪嬪綋鍓嶆枃浠剁殑缂栫爜銆�
鍦╲imrc涓坊鍔爏et fileencoding=ucs-bom,utf-8,cp936锛寁im浼氭牴鎹鎵撳紑鐨勬枃浠堕�夋嫨鍚堥�傜殑缂栫爜銆� 娉ㄦ剰锛氱紪鐮佷箣闂翠笉瑕佺暀绌烘牸銆� cp936瀵瑰簲浜巊bk缂栫爜銆� ucs-bom瀵瑰簲浜巜indows涓嬬殑鏂囦欢鏍煎紡銆�
璁﹙im 姝g‘澶勭悊鏂囦欢鏍煎紡鍜屾枃浠剁紪鐮侊紝鏈夎禆浜巭/.vimrc鐨勬纭厤缃�
###12.3 鏂囦欢鏍煎紡
澶ц嚧鏈変笁绉嶆枃浠舵牸寮忥細unix, dos, mac. 涓夌鏍煎紡鐨勫尯鍒富瑕佸湪浜庡洖杞﹂敭鐨勭紪鐮侊細dos 涓嬫槸鍥炶溅鍔犳崲琛岋紝unix 涓嬪彧鏈� 鎹㈣绗︼紝mac 涓嬪彧鏈夊洖杞︾銆�
:e ++ff=dos filename, 璁﹙im鐢╠os鏍煎紡鎵撳紑杩欎釜鏂囦欢銆�
:w ++ff=mac filename, 浠ac鏍煎紡瀛樺偍杩欎釜鏂囦欢銆�
:set ff锛屾樉绀哄綋鍓嶆枃浠剁殑鏍煎紡銆�
鍦╲imrc涓坊鍔爏et fileformats=unix,dos,mac锛岃vim鑷姩璇嗗埆鏂囦欢鏍煎紡銆�
##13. 缂栫▼杈呭姪
###13.1 涓�浜涙寜閿�
gd: 璺宠浆鍒板眬閮ㄥ彉閲忕殑瀹氫箟澶勶紱
gD: 璺宠浆鍒板叏灞�鍙橀噺鐨勫畾涔夊锛屼粠褰撳墠鏂囦欢寮�澶村紑濮嬫悳绱紱
g;: 涓婁竴涓慨鏀硅繃鐨勫湴鏂癸紱
g,: 涓嬩竴涓慨鏀硅繃鐨勫湴鏂癸紱
[[: 璺宠浆鍒颁笂涓�涓嚱鏁板潡寮�濮嬶紝闇�瑕佹湁鍗曠嫭涓�琛岀殑{銆�
]]: 璺宠浆鍒颁笅涓�涓嚱鏁板潡寮�濮嬶紝闇�瑕佹湁鍗曠嫭涓�琛岀殑{銆�
[]: 璺宠浆鍒颁笂涓�涓嚱鏁板潡缁撴潫锛岄渶瑕佹湁鍗曠嫭涓�琛岀殑}銆�
][: 璺宠浆鍒颁笅涓�涓嚱鏁板潡缁撴潫锛岄渶瑕佹湁鍗曠嫭涓�琛岀殑}銆�
[{: 璺宠浆鍒板綋鍓嶅潡寮�濮嬪锛�
]}: 璺宠浆鍒板綋鍓嶅潡缁撴潫澶勶紱
[/: 璺宠浆鍒板綋鍓嶆敞閲婂潡寮�濮嬪锛�
]/: 璺宠浆鍒板綋鍓嶆敞閲婂潡缁撴潫澶勶紱
%: 涓嶄粎鑳界Щ鍔ㄥ埌鍖归厤鐨�(),{}鎴朳]涓婏紝鑰屼笖鑳藉湪#if锛�#else锛� #endif涔嬮棿璺宠穬銆�
涓嬮潰鐨勬嫭鍙峰尮閰嶅缂栫▼寰堝疄鐢ㄧ殑銆�
ci', di', yi'锛氫慨鏀广�佸壀鍒囨垨澶嶅埗'涔嬮棿鐨勫唴瀹广��
ca', da', ya'锛氫慨鏀广�佸壀鍒囨垨澶嶅埗'涔嬮棿鐨勫唴瀹癸紝鍖呭惈'銆�
ci", di", yi"锛氫慨鏀广�佸壀鍒囨垨澶嶅埗"涔嬮棿鐨勫唴瀹广��
ca", da", ya"锛氫慨鏀广�佸壀鍒囨垨澶嶅埗"涔嬮棿鐨勫唴瀹癸紝鍖呭惈"銆�
ci(, di(, yi(锛氫慨鏀广�佸壀鍒囨垨澶嶅埗()涔嬮棿鐨勫唴瀹广��
ca(, da(, ya(锛氫慨鏀广�佸壀鍒囨垨澶嶅埗()涔嬮棿鐨勫唴瀹癸紝鍖呭惈()銆�
ci[, di[, yi[锛氫慨鏀广�佸壀鍒囨垨澶嶅埗[]涔嬮棿鐨勫唴瀹广��
ca[, da[, ya[锛氫慨鏀广�佸壀鍒囨垨澶嶅埗[]涔嬮棿鐨勫唴瀹癸紝鍖呭惈[]銆�
ci{, di{, yi{锛氫慨鏀广�佸壀鍒囨垨澶嶅埗{}涔嬮棿鐨勫唴瀹广��
ca{, da{, ya{锛氫慨鏀广�佸壀鍒囨垨澶嶅埗{}涔嬮棿鐨勫唴瀹癸紝鍖呭惈{}銆�
ci<, di<, yi<锛氫慨鏀广�佸壀鍒囨垨澶嶅埗<>涔嬮棿鐨勫唴瀹广��
ca<, da<, ya<锛氫慨鏀广�佸壀鍒囨垨澶嶅埗<>涔嬮棿鐨勫唴瀹癸紝鍖呭惈<>銆�
###13.2 ctags
ctags -R: 鐢熸垚tag鏂囦欢锛�-R琛ㄧず涔熶负瀛愮洰褰曚腑鐨勬枃浠剁敓鎴恡ags
:set tags=path/tags -- 鍛婅瘔ctags浣跨敤鍝釜tag鏂囦欢
:tag xyz -- 璺冲埌xyz鐨勫畾涔夊锛屾垨鑰呭皢鍏夋爣鏀惧湪xyz涓婃寜C-]锛岃繑鍥炵敤C-t
:stag xyz -- 鐢ㄥ垎鍓茬殑绐楀彛鏄剧ずxyz鐨勫畾涔夛紝鎴栬�匔-w ]锛� 濡傛灉鐢–-w n ]锛屽氨浼氭墦寮�涓�涓猲琛岄珮鐨勭獥鍙�
:ptag xyz -- 鍦ㄩ瑙堢獥鍙d腑鎵撳紑xyz鐨勫畾涔夛紝鐑敭鏄疌-w }銆�
:pclose -- 鍏抽棴棰勮绐楀彛銆傜儹閿槸C-w z銆�
:pedit abc.h -- 鍦ㄩ瑙堢獥鍙d腑缂栬緫abc.h
:psearch abc -- 鎼滅储褰撳墠鏂囦欢鍜屽綋鍓嶆枃浠秈nclude鐨勬枃浠讹紝鏄剧ず鍖呭惈abc鐨勮銆�
鏈夋椂涓�涓猼ag鍙兘鏈夊涓尮閰嶏紝濡傚嚱鏁伴噸杞斤紝涓�涓嚱鏁板悕灏变細鏈夊涓尮閰嶃�� 杩欑鎯呭喌浼氬厛璺宠浆鍒扮涓�涓尮閰嶅銆�
:[n]tnext -- 涓嬩竴[n]涓尮閰嶃��
:[n]tprev -- 涓婁竴[n]涓尮閰嶃��
:tfirst -- 绗竴涓尮閰�
:tlast -- 鏈�鍚庝竴涓尮閰�
:tselect tagname -- 鎵撳紑閫夋嫨鍒楄〃
tab閿ˉ榻�
:tag xyz -- 琛ラ綈浠yz寮�澶寸殑tag鍚嶏紝缁х画鎸塼ab閿紝浼氭樉绀哄叾浠栫殑銆�
:tag /xyz -- 浼氱敤鍚嶅瓧涓惈鏈墄yz鐨則ag鍚嶈ˉ鍏ㄣ��
###13.3 cscope
cscope -Rbq: 鐢熸垚cscope.out鏂囦欢
:cs add /path/to/cscope.out /your/work/dir
:cs find c func -- 鏌ユ壘func鍦ㄥ摢浜涘湴鏂硅璋冪敤
:cw -- 鎵撳紑quickfix绐楀彛鏌ョ湅缁撴灉
###13.4 gtags
Gtags缁煎悎浜哻tags鍜宑scope鐨勫姛鑳姐�� 浣跨敤Gtags涔嬪墠锛屼綘闇�瑕佸畨瑁匞NU Gtags銆� 鐒跺悗鍦ㄥ伐绋嬬洰褰曡繍琛実tags銆�
:Gtags funcname 瀹氫綅鍒� funcname 鐨勫畾涔夊銆�
:Gtags -r funcname 鏌ヨ funcname琚紩鐢ㄧ殑鍦版柟銆�
:Gtags -s symbol 瀹氫綅 symbol 鍑虹幇鐨勫湴鏂广��
:Gtags -g string Goto string 鍑虹幇鐨勫湴鏂广�� :Gtags -gi string 蹇界暐澶у皬鍐欍��
:Gtags -f filename 鏄剧ず filename 涓殑鍑芥暟鍒楄〃銆� 浣犲彲浠ョ敤 :Gtags -f % 鏄剧ず褰撳墠鏂囦欢銆�
:Gtags -P pattern 鏄剧ず璺緞涓寘鍚壒瀹氭ā寮忕殑鏂囦欢銆� 濡� :Gtags -P .h$ 鏄剧ず鎵�鏈夊ご鏂囦欢锛� :Gtags -P /vm/ 鏄剧ずvm鐩綍涓嬬殑鏂囦欢銆�
###13.5 缂栬瘧
vim鎻愪緵浜�:make鏉ョ紪璇戠▼搴忥紝榛樿璋冪敤鐨勬槸make锛� 濡傛灉浣犲綋鍓嶇洰褰曚笅鏈塵akefile锛岀畝鍗曞湴:make鍗冲彲銆�
濡傛灉浣犳病鏈塵ake绋嬪簭锛屼綘鍙互閫氳繃閰嶇疆makeprg閫夐」鏉ユ洿鏀筸ake璋冪敤鐨勭▼搴忋�� 濡傛灉浣犲彧鏈変竴涓猘bc.java鏂囦欢锛屼綘鍙互杩欐牱璁剧疆锛�
set makeprg=javac\ abc.java
鐒跺悗:make鍗冲彲銆傚鏋滅▼搴忔湁閿欙紝鍙互閫氳繃quickfix绐楀彛鏌ョ湅閿欒銆� 涓嶈繃濡傛灉瑕佹纭畾浣嶉敊璇紝闇�瑕佽缃ソerrorformat锛岃vim璇嗗埆閿欒淇℃伅銆� 濡傦細
:setl efm=%A%f:%l:\ %m,%-Z%p^,%-C%.%#
%f琛ㄧず鏂囦欢鍚嶏紝%l琛ㄧず琛屽彿锛� %m琛ㄧず閿欒淇℃伅锛屽叾瀹冪殑杩樹笉鑳界悊瑙c�� 璇峰弬鑰� :help errorformat銆�
###13.6 蹇�熶慨鏀圭獥鍙�
鍏跺疄鏄痲uickfix鎻掍欢鎻愪緵鐨勫姛鑳斤紝 瀵圭紪璇戣皟璇曠▼搴忛潪甯告湁鐢� :)
:copen -- 鎵撳紑蹇�熶慨鏀圭獥鍙c��
:cclose -- 鍏抽棴蹇�熶慨鏀圭獥鍙c��
蹇�熶慨鏀圭獥鍙e湪make绋嬪簭鏃堕潪甯告湁鐢紝褰搈ake涔嬪悗锛�
:cl -- 鍦ㄥ揩閫熶慨鏀圭獥鍙d腑鍒楀嚭閿欒銆�
:cn -- 瀹氫綅鍒颁笅涓�涓敊璇��
:cp -- 瀹氫綅鍒颁笂涓�涓敊璇��
:cr -- 瀹氫綅鍒扮涓�涓敊璇��
###13.7 鑷姩琛ュ叏
C-x C-s -- 鎷煎啓寤鸿銆�
C-x C-v -- 琛ュ叏vim閫夐」鍜屽懡浠ゃ��
C-x C-l -- 鏁磋琛ュ叏銆�
C-x C-f -- 鑷姩琛ュ叏鏂囦欢璺緞銆傚脊鍑鸿彍鍗曞悗锛屾寜C-f寰幆閫夋嫨锛屽綋鐒朵篃鍙互鎸� C-n鍜孋-p銆�
C-x C-p 鍜孋-x C-n -- 鐢ㄦ枃妗d腑鍑虹幇杩囩殑鍗曡瘝琛ュ叏褰撳墠鐨勮瘝銆� 鐩存帴鎸塁-p鍜孋-n涔熷彲浠ャ��
C-x C-o -- 缂栫▼鏃跺彲浠ヨˉ鍏ㄥ叧閿瓧鍜屽嚱鏁板悕鍟娿��
C-x C-i -- 鏍规嵁澶存枃浠跺唴鍏抽敭瀛楄ˉ鍏ㄣ��
C-x C-d -- 琛ュ叏瀹忓畾涔夈��
C-x C-n -- 鎸夌紦鍐插尯涓嚭鐜拌繃鐨勫叧閿瓧琛ュ叏銆� 鐩存帴鎸塁-n鎴朇-p鍗冲彲銆�
褰撳脊鍑鸿ˉ鍏ㄨ彍鍗曞悗锛�
C-p 鍚戝墠鍒囨崲鎴愬憳锛�
C-n 鍚戝悗鍒囨崲鎴愬憳锛�
C-e 閫�鍑轰笅鎷夎彍鍗曪紝骞堕��鍥炲埌鍘熸潵褰曞叆鐨勬枃瀛楋紱
C-y 閫�鍑轰笅鎷夎彍鍗曪紝骞舵帴鍙楀綋鍓嶉�夐」銆�
###13.8 澶氳缂╄繘缂╁嚭
姝e父妯″紡涓嬶紝鎸変袱涓�>;鍏夋爣鎵�鍦ㄨ浼氱缉杩涖��
濡傛灉鍏堟寜浜唍锛屽啀鎸変袱涓�>;锛屽厜鏍囦互涓嬬殑n琛屼細缂╄繘銆�
瀵瑰簲鐨勶紝鎸変袱涓�<;锛屽厜鏍囨墍鍦ㄨ浼氱缉鍑恒��
濡傛灉鍦ㄧ紪杈戜唬鐮佹枃浠讹紝鍙互鐢�=杩涜璋冩暣銆�
鍦ㄥ彲瑙嗘ā寮忎笅锛岄�夋嫨瑕佽皟鏁寸殑浠g爜鍧楋紝鎸�=锛屼唬鐮佷細鎸変功鍐欒鍒欑缉鎺掑ソ銆�
鎴栬�卬 =锛岃皟鏁磏琛屼唬鐮佺殑缂╂帓銆�
###13.9 鎶樺彔
zf -- 鍒涘缓鎶樺彔鐨勫懡浠わ紝鍙互鍦ㄤ竴涓彲瑙嗗尯鍩熶笂浣跨敤璇ュ懡浠わ紱
zd -- 鍒犻櫎褰撳墠琛岀殑鎶樺彔锛�
zD -- 鍒犻櫎褰撳墠琛岀殑鎶樺彔锛�
zfap -- 鎶樺彔鍏夋爣鎵�鍦ㄧ殑娈碉紱
zo -- 鎵撳紑鎶樺彔鐨勬枃鏈紱
zc -- 鏀惰捣鎶樺彔锛�
za -- 鎵撳紑/鍏抽棴褰撳墠鎶樺彔锛�
zr -- 鎵撳紑宓屽鐨勬姌琛岋紱
zm -- 鏀惰捣宓屽鐨勬姌琛岋紱
zR (zO) -- 鎵撳紑鎵�鏈夋姌琛岋紱
zM (zC) -- 鏀惰捣鎵�鏈夋姌琛岋紱
zj -- 璺冲埌涓嬩竴涓姌鍙犲锛�
zk -- 璺冲埌涓婁竴涓姌鍙犲锛�
zi -- enable/disable fold;
##14. 鍛戒护琛�
normal妯″紡涓嬫寜:杩涘叆鍛戒护琛屾ā寮�
###14.1 鍛戒护琛屾ā寮忎笅鐨勫揩鎹烽敭锛�
涓婁笅鏂瑰悜閿細涓婁竴鏉℃垨鑰呬笅涓�鏉″懡浠ゃ�傚鏋滃凡缁忚緭鍏ヤ簡閮ㄥ垎鍛戒护锛屽垯鎵句笂涓� 鏉℃垨鑰呬笅涓�鏉″尮閰嶇殑鍛戒护銆�
宸﹀彸鏂瑰悜閿細宸�/鍙崇Щ涓�涓瓧绗︺��
C-w锛� 鍚戝墠鍒犻櫎涓�涓崟璇嶃��
C-h锛� 鍚戝墠鍒犻櫎涓�涓瓧绗︼紝绛夊悓浜嶣ackspace銆�
C-u锛� 浠庡綋鍓嶄綅缃Щ鍔ㄥ埌鍛戒护琛屽紑澶淬��
C-b锛� 绉诲姩鍒板懡浠よ寮�澶淬��
C-e锛� 绉诲姩鍒板懡浠よ鏈熬銆�
Shift-Left锛� 宸︾Щ涓�涓崟璇嶃��
Shift-Right锛� 鍙崇Щ涓�涓崟璇嶃��
@锛� 閲嶅涓婁竴娆$殑鍐掑彿鍛戒护銆�
q锛� 姝e父妯″紡涓嬶紝q鐒跺悗鎸�':'锛屾墦寮�鍛戒护琛屽巻鍙茬紦鍐插尯锛� 鍙互鍍忕紪杈戞枃浠朵竴鏍风紪杈戝懡浠ゃ��
q/鍜宷? 鍙互鎵撳紑鏌ユ壘鍘嗗彶璁板綍銆�
###14.2 鎵ц澶栭儴鍛戒护
:! cmd 鎵ц澶栭儴鍛戒护銆�
:!! 鎵ц涓婁竴娆$殑澶栭儴鍛戒护銆�
:sh 璋冪敤shell锛岀敤exit杩斿洖vim銆�
:r !cmd 灏嗗懡浠ょ殑杩斿洖缁撴灉鎻掑叆鏂囦欢褰撳墠浣嶇疆銆�
:m,nw !cmd 灏嗘枃浠剁殑m琛屽埌n琛屼箣闂寸殑鍐呭鍋氫负鍛戒护杈撳叆鎵ц鍛戒护銆�
##15. 鍏跺畠
###15.1 宸ヤ綔鐩綍
:pwd 鏄剧ずvim鐨勫伐浣滅洰褰曘��
:cd path 鏀瑰彉vim鐨勫伐浣滅洰褰曘��
:set autochdir 鍙互璁﹙im 鏍规嵁缂栬緫鐨勬枃浠惰嚜鍔ㄥ垏鎹㈠伐浣滅洰褰曘��
###15.2 涓�浜涘揩鎹烽敭锛堟敹闆嗕腑锛�
K: 鎵撳紑鍏夋爣鎵�鍦ㄨ瘝鐨刴anpage銆�
*: 鍚戜笅鎼滅储鍏夋爣鎵�鍦ㄨ瘝銆�
g*: 鍚屼笂锛屼絾閮ㄥ垎绗﹀悎鍗冲彲銆�
#: 鍚戜笂鎼滅储鍏夋爣鎵�鍦ㄨ瘝銆�
g#: 鍚屼笂锛屼絾閮ㄥ垎绗﹀悎鍗冲彲銆�
g C-g: 缁熻鍏ㄦ枃鎴栫粺璁¢儴鍒嗙殑瀛楁暟銆�
###15.3 鍦ㄧ嚎甯姪
:h(elp)鎴朏1 鎵撳紑鎬荤殑甯姪銆�
:help user-manual 鎵撳紑鐢ㄦ埛鎵嬪唽銆�
鍛戒护甯姪鐨勬牸寮忎负锛氱涓�琛屾寚鏄庢�庝箞浣跨敤閭d釜鍛戒护锛� 鐒跺悗鏄缉杩涚殑涓�娈佃В閲婅繖涓懡浠ょ殑浣滅敤锛岀劧鍚庢槸杩涗竴姝ョ殑淇℃伅銆�
:helptags somepath 涓簊omepath涓殑鏂囨。鐢熸垚绱㈠紩銆�
:helpgrep 鍙互鎼滅储鏁翠釜甯姪鏂囨。锛屽尮閰嶇殑鍒楄〃鏄剧ず鍦╭uickfix绐楀彛涓��
Ctrl+] 璺宠浆鍒皌ag涓婚锛孋trl+t 璺冲洖銆�
:ver 鏄剧ず鐗堟湰淇℃伅銆�
###15.4 涓�浜涘皬鍔熻兘
绠�鍗曡绠楀櫒: 鍦ㄦ彃鍏ユā寮忎笅锛岃緭鍏-r =锛岀劧鍚庤緭鍏ヨ〃杈惧紡锛屽氨鑳藉湪 鍏夋爣澶勫緱鍒拌绠楃粨鏋溿��