我的vim插件有一个跳转到不同位置的命令(就像标签一样)。
我使用cursor
函数。
如何在跳转列表中记录先前的位置,以便 Ctrl + O 按预期工作?
答案 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("."))
会将当前光标位置添加到跳转列表中。