Vim:将光标移动到最后位置

时间:2011-02-19 16:45:01

标签: 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之外的东西)回到第一个位置,可能还要回到之前的位置。

4 个答案:

答案 0 :(得分:383)

最快的方法是点击:

&#39; &#39;

(两个撇号)或:

` `

(p)(两个反叛)。请注意,不同之处在于反引号到达行上的相同位置,而撇号则到达行的开头。在英国键盘上,撇号更易于访问,所以我倾向于使用那个。有很多有用的标记,请参阅:help mark-motions

对于其他一些动作(我认为不是 2 j ),还有一个跳转列表可以让你在多个动作之间来回导航运动。 Ctrl O Ctrl I 执行此导航,但请参阅:help jump-motions以获取更多信息。

答案 1 :(得分:55)

您还可以使用g;g,在之前的修改位置列表中前后移动。

在非美国键盘上

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

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

答案 2 :(得分:34)

为什么没人用DrAl's answer找出问题? ' '` `不会解决这篇文章的原始问题! 这两个命令对于某些光标移动不起作用,如 2 j ,至少对我而言。它会让新手对vim更加困惑。

' '` ` Ctrl <的行为kbd> I 或 Ctrl O 基于跳转列表。 2 j 不会将位置更改保存到跳转列表中,因此这些命令不适用于 2 j

' '` `在最后一个位置和当前位置之间切换。 Ctrl I Ctrl O 处理跳转列表历史记录。

g ; g 移动编辑位置,这些位置也经常被使用。

答案 3 :(得分:30)

直接来自帮助(:帮助跳转):

  

:ju [mps]打印跳转列表(不是动作命令)。 {不在                 Vi} {没有| + jumplist |时不可用特征}

                          *jumplist*
     

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