是否可以在(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
之外的东西)回到第一个位置,可能还要回到之前的位置。
答案 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 |时不可用特征}