VIM - 如何将当前位置加入跳转列表?

9
我想要改进vim的功能,使得当我在移动光标时停留3秒后,可以回到上一次所在的位置。这样我就可以随意滚动页面,使用快捷键CTRL+o跳回之前的位置。
vim将许多移动操作放在:jumps列表中,其中大部分对我来说都是无用的。我想知道如何实现我的需求,换句话说,我想让jumplist更加智能化。
PS:Netbeans和VS也有类似的行为。
3个回答

12

要将当前位置自动添加到跳转列表中,您可以使用CursorHold事件:

:autocmd CursorHold * normal! m'

导航使用默认的<C-o>/<C-i>


它会追加还是替换最后一个? - MaikoID
1
它们将被追加;你不能替换它们。 - Ingo Karkat

10
常见的用法是使用m'命令进行跳转。例如,您可以键入mx,然后进行一些操作,然后执行'x跳回执行mx时所在的位置。这适用于字母表中的每个字母(例如mamb...mz)。大写标记(mAmB等)还将记住文件名,因此您可以在文件之间跳转。您可以设置许多其他特殊标记以实现各种目的。
“上一上下文标记”称为'。当您跳转时,它会自动设置,并且也可以使用m'手动设置。使用''进行跳转。m'命令还可以手动添加到跳转列表。''与Ctrl+O大致相当,但不接受计数。
如果您将这些命令中的撇号替换为反引号,则Vim将跳转到指定列而不仅仅是行。实际上,撇号更容易输入并且通常足够接近。

我知道标记,但当你分析日志时,这还不够,你需要滚动太多。标准跳转对于这种情况也不是很有用,因为我需要多个自动存储的跳转。 - MaikoID
@MaikoID:为什么不在需要时手动设置字母标记呢? - Kevin
1
因为我需要在开始滚动之前设置它们,而我简单地无法记住要这样做。我使用书签来记住重要的事情,我认为使用它来帮助滚动是不正确的,但这只是我的观点。 - MaikoID
你有26个(包括文件标记在内共52个),你可以并且应该根据自己的需要随意使用它们。 - Kevin

2
你可以在寄存器中设置一个标记。按键是"m'"。我在Vim的文档":help jumplist"中找到了这个信息。

你可以通过设置'm'标记来显式地添加跳转。

"最初的回答"应翻译为:"原始答案"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接