7

我的 vim 插件有一个跳转到不同位置的命令(就像标签一样)。

cursor为此使用该功能。

如何在跳转列表中记录以前的位置,以便Ctrl+O按预期工作?

4

3 回答 3

12

我自己也想这样做,对我有用的是在光标移动之前标记`。

normal! m`
call cursor(l, c)

如帮助所示,setpos() 和 cursor() 都不会修改 jumplist,那么 setpos() 和 cursor() 有什么区别,奇怪!

于 2013-11-11T07:05:06.783 回答
5

:help cursor()再清楚不过了:

[…]
Does not change the jumplist.
[…]

(编辑)

这意味着cursor()跳转不会记录在跳转列表中,因此cursor()这里是一个不合适的工具。

(完结)

作为替代方案,您可以使用类似的东西

execute "normal " . target_line . "G" . target_col . "|"

这与 和 完全兼容,<C-o>并且<C-i>

call cursor(target_line,target_col)

即使它让 JavaScripters 不寒而栗 ;-)

于 2013-10-05T08:47:07.010 回答
2

只需在移动光标之前通过设置 ' 标记来标记该位置。这可以通过使用正常模式m命令,甚至调用 来完成setpos(),例如call setpos("''", getpos("."))将当前光标位置添加到跳转列表中。

于 2013-10-05T11:29:43.687 回答