在編輯的時(shí)候裂允,你忽然想起來(lái)需要修改同一個(gè)文檔的另一個(gè)地方损离,但又想記住當(dāng)前的位置,以便稍后再回來(lái)編輯叫胖。應(yīng)該怎么做呢草冈?vim中我們可以對(duì)文本進(jìn)行標(biāo)記,這個(gè)概念類似于visual studio中的書簽瓮增,目的是方便vim編輯器在文檔的不同位置間跳轉(zhuǎn)怎棱。
正常情況下,這意味著要移動(dòng)到那個(gè)位置绷跑,編輯拳恋,然后再移回來(lái)。這樣很費(fèi)事砸捏,也容易忘記剛才所在的位置谬运。
Vim有更聰明的辦法隙赁。移動(dòng)光標(biāo)到下述文本的第5行(John Lennon的名言)。用ma創(chuàng)建一個(gè)名為‘a(chǎn)’的標(biāo)記梆暖。移動(dòng)光標(biāo)到任一地方伞访,比如,4j轰驳。
按下'a(即厚掷,單引號(hào)加上標(biāo)記的名字),瞧级解,Vim跳到了剛才做標(biāo)記的那一行的行首冒黑。如果要跳到做標(biāo)記的位置,按下a(即
,上排數(shù)字鍵1左邊那個(gè)鍵)勤哗。
可以使用任一字母(a-zA-Z)去命名一個(gè)標(biāo)記抡爹,意味著一個(gè)文件里最多可以有52個(gè)命名標(biāo)記。
添加標(biāo)記
將光標(biāo)移到某一行芒划,使用 ma 命令添加標(biāo)記冬竟。其中,m 是標(biāo)記命令腊状,a 是所做標(biāo)記的名稱诱咏。
可以使用小寫字母 a-z 或大寫字母 A-Z 中的任意一個(gè)做為標(biāo)記名稱。小寫字母的標(biāo)記缴挖,僅用于當(dāng)前緩沖區(qū);而大寫字母的標(biāo)記焚辅,則可以跨越不同的緩沖區(qū)映屋。例如,你正在編輯 File1同蜻,但仍然可以使 用'A 命令棚点,移動(dòng)到 File2 中創(chuàng)建的標(biāo)記A。
跳轉(zhuǎn)標(biāo)記
創(chuàng)建標(biāo)記后湾蔓,可以使用 'a 命令瘫析,跳轉(zhuǎn)到指定標(biāo)記行的首個(gè)非空字符。這里 ' 是單引號(hào)默责。也可以使用 a 命令贬循,移到所做標(biāo)記時(shí)的光標(biāo)位置。這里
是反引號(hào)(也就是數(shù)字鍵1左邊的那一個(gè))桃序。
列出標(biāo)記
利用:marks命令杖虾,可以列出所有標(biāo)記。這其中也包括一些系統(tǒng)內(nèi)置的特殊標(biāo)記(Special marks):
. ——最近編輯的位置
0-9 ——最近使用的文件
∧ ——最近插入的位置
' ——上一次跳轉(zhuǎn)前的位置
" ——上一次退出文件時(shí)的位置
[ ——上一次修改的開始處
] ——上一次修改的結(jié)尾處
刪除標(biāo)記
如果刪除了做過標(biāo)記的文本行媒熊,那么所做的標(biāo)記也就不存了奇适。我們不僅可以利用標(biāo)記來(lái)快速移動(dòng)坟比,而且還可以使用標(biāo)記來(lái)刪除文本,例如在某一行用ma做了標(biāo)記嚷往,然后就可以使用d'a來(lái)刪掉這一行葛账。當(dāng)然,我們也可以使用y'a命令就可以來(lái)復(fù)制這一行了皮仁。
使用:delmarks a b c命令籍琳,可以刪除某個(gè)或多個(gè)標(biāo)記;而:delmarks! 命令魂贬,則會(huì)刪除所有標(biāo)記巩割。
利用:help mark-motions命令,可以查看關(guān)于標(biāo)記的更多幫助信息付燥。
命令小結(jié)
m ——?jiǎng)?chuàng)建標(biāo)記
' ——移動(dòng)到標(biāo)記的文本行首
` ——移動(dòng)到標(biāo)記的光標(biāo)位置
:marks ——列示所有標(biāo)記
:delmarks ——?jiǎng)h除指定標(biāo)記
:delmarks! ——?jiǎng)h除所有標(biāo)記