Vim:移动光标到最后一个位置

在(g)Vim中是否可以将光标移动到之前的位置(当处于正常模式时)?可以在先前光标位置列表中来回循环的内容将是理想的。但也只是切换到最后一个位置就足够了(类似于bash中的cd -目录)。

这里有一个小示范:

line |1| <- cursor position
line 2
line 3
line 4

假设我做了2j,现在是这样的:

line 1
line 2
line |3| <- cursor position
line 4

现在我想按下某个东西(显然不是2k)来移动回第一个位置,可能还会移动到之前的位置。

97669 次浏览

最快的方法是:

(两个撇号)或:

(两个引号)。注意,不同之处在于反撇号位于行上相同的位置,而撇号位于行首。在英国键盘上,撇号更容易使用,所以我倾向于使用撇号。有很多这样有用的标记,参见:help mark-motions

对于其他一些运动(我认为不是2j),还有一个跳跃列表,让你在许多运动之间来回导航。CtrlOCtrl做这个导航,但更多信息请参见:help jump-motions

右从帮助(:help跳转):

:ju[mps]打印跳跃列表(不是一个运动命令)。{不 Vi}{没有|+jumplist|特性时不可用}

                          *jumplist*

跳转在跳转列表中被记住。用CTRL-O和CTRL-I命令你 可以转到旧跳转之前的光标位置,然后再返回。因此你可以 在列表中上下移动。每个窗口都有一个单独的跳转列表。 最大条目数固定为100个。 {没有|+jumplist|特性时不可用}

你也可以使用g;g,在之前的编辑位置列表中来回移动。

非美国键盘

在我的瑞士和德国键盘布局中,输入;不方便,需要使用转变键。因此,我将g-定义为$MYVIMRCg;更方便的别名:

" Map g- as an alias for g;
nnoremap g- g;

为什么没有人想出DrAl的回答的问题? 不能解决这篇文章的原始问题! 这两个命令不能用于像2j这样的光标移动,至少对我来说是这样。这将使新手更加困惑。< / p >

,以及CtrlCtrlO的行为基于跳转列表。2j不会将位置变化保存到跳转列表中,因此这些命令对2j无效。

在上一个位置和当前位置之间切换。 CtrlCtrlO通过跳转列表历史记录工作。

gg通过编辑位置移动,这也是非常常用的。