Vim

标注

你可以使用标注功能来标记一个位置,也就是记录文件某行的某个位置。

标注 设置者 使用
a-z 用户 仅对当前的一个文件生效,也就意味着只可以在当前文件中跳转
A-Z 用户 全局标注,可以作用于不同文件。大写标注也称为「文件标注」。跳转时有可能会切换到另一个缓冲区
0-9 viminfo 0 代表 viminfo 最后一次被写入的位置。实际使用中,就代表 VIM 进程最后一次结束的位置。1 代表 VIM 进程倒数第二次结束的位置,以此类推

如果想跳转到指定的标注,你可以先按下 ' / g' 或者 ``` / `g`` 然后按下标注名。

如果你想定义当前文件中的标注,可以先按下 m 再按下标注名。比如,按下 mm 就可以把当前位置标注为 m。在这之后,如果你的光标切换到了文件的其他位置,只需要通过 'm 或者 m`即可回到刚才标注的行。区别在于,`'m`会跳转回被标记行的第一个非空字符,而m会跳转回被标记行的被标记列。根据 viminfo 的设置,你可以在退出 VIM 的时候保留小写字符标注。请参阅:h viminfo-'` 来获取更多帮助。

如果你想定义全局的标注,可以先按下 m 再按下大写英文字符。比如,按下 mM 就可以把当前文件的当前位置标注为 M。在这之后,就算你切换到其他的缓冲区,依然可以通过 'M 或 ``M` 跳转回来。

关于跳转,还有以下的方式:

按键 跳转至
'[ 与 ``[` 上一次修改或复制的第一行或第一个字符
'] 与 ``]` 上一次修改或复制的最后一行或最后一个字符
'< 与 ``<` 上一次在可视模式下选取的第一行或第一个字符
'> 与 ``>` 上一次在可视模式下选取的最后一行或最后一个字符
'' 与 ``'` 上一次跳转之前的光标位置
'" 与 ``"` 上一次关闭当前缓冲区时的光标位置
'^ 与 ``^` 上一次插入字符后的光标位置
'. 与 ``.` 上一次修改文本后的光标位置
'( 与 ``(` 当前句子的开头
') 与 ``)` 当前句子的结尾
'{ 与 ``{` 当前段落的开头
'} 与 ``}` 当前段落的结尾

标注也可以搭配 范围 一起使用。前面提到过,如果你在可视模式下选取一些文本,然后按下 :,这时候你会发现命令行已经被填充了 :'。对照上面的表格,现在你应该明白了,这段代表的就是可视模式下选取的范围。

请使用 :marks 命令来显示所有的标注,参阅 :h mark-motions 来获取关于标注的更多帮助。