2020年2月27日 星期四

vi跳转到前一位置和标记位置

1. vi跳转到前一位置
有很多时候,当把光标移动了一段距离之后,发现又希望将其移动回去。有时候,这种移动是有意的。例如,您可能跳转到编辑缓冲区的末尾,添加一行,然后又希望返回到原来那一行。这种也有可能是无意间发生的,例如,当发现错误时,已经离错误好长一段时间了。

在这些情况下,可以使用``(在键盘esc的下面)命令返回到前一个位置(也就是说,连续键入两个反引号)。为了测试这条命令,用一个大文件启动vi,然后使用带重复次数的G命令跳转到第10行:现在使用l(小写字母“l”命令)将光标移动到这一行的第8个字符:

8l

接下来,使用G命令跳转到编辑缓冲区的末尾,即键入:

G

为了返回到前一位置(第10行的第8个字符),可以连续键入两个反引号:

``

该命令的i一个变体就是使用``(两个单引号)取代两个反引号。这将跳转到行的开头,而不是在行的中间。为了测试这个命令,我们再次将光标移动到第10行的第8个位置上,然后跳转到文件的末尾:

10G
8l
G

现在连续键入两个单引号:

``
注意光标在位于第10行的开头。


2. vi标记位置

该命令还有一个更强大的版本,允许不可见的名称标识任意行标识任意行。然后,每当需要时就可以使用这个名称跳转到这一行。为了以这种方式标识一行,可以键入m,后面跟一个字母。这个字母就是这一行的名称。例如,为了用名称“a”标记当前行,可以键入:

ma

为了跳转到一个标记行,可以键入一个`(反引号)或一个'(单引号),后面跟这一行的名称,例如:

`a
'a

第一条命令(反引号)跳转到标记行的准确位置(即标记这一行时的位置)。第二条命令(单引号)指跳转到标记行的开头。
提示:
当标记行时,可以使用任意的字母。原则上,这允许标记26行(从a到z) 。实践中,极少需要同时标记多余两行。标记一行时,最简单的方法救赎键入mm,然后可以通过键入'm跳转到这一行(如果标记两行的话,可以使用mamm)。

一旦习惯了键入这些组合,就会很自然的标记某一行,将光标移动到其它地方做些事情,然后再跳转回原始行,而且整个过程不必将手离开键盘。

沒有留言:

張貼留言