我的 vim 插件有一个跳转到不同位置的命令(就像标签一样)。
我cursor
为此使用该功能。
如何在跳转列表中记录以前的位置,以便Ctrl+O按预期工作?
我自己也想这样做,对我有用的是在光标移动之前标记`。
normal! m`
call cursor(l, c)
如帮助所示,setpos() 和 cursor() 都不会修改 jumplist,那么 setpos() 和 cursor() 有什么区别,奇怪!
: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 不寒而栗 ;-)
只需在移动光标之前通过设置 ' 标记来标记该位置。这可以通过使用正常模式m
命令,甚至调用 来完成setpos()
,例如call setpos("''", getpos("."))
将当前光标位置添加到跳转列表中。