将位置推送到跳转列表

时间:2013-10-05 07:21:49

标签: vim vim-plugin

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

我使用cursor函数。

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

3 个答案:

答案 0 :(得分:6)

:help cursor()无法更清楚:

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

(编辑)

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

(EndEdit中)

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

的内容
execute "normal " . target_line . "G" . target_col . "|"

<C-o><C-i>完全兼容,与

一样惯用
call cursor(target_line,target_col)

即使它给JavaScripters带来了寒意; - )

答案 1 :(得分:4)

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

normal! m`
call cursor(l, c)

正如帮助所示,setpos()和cursor()都没有修改跳转列表,所以setpos()和cursor()的区别是什么,奇怪!

答案 2 :(得分:1)

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