我可以用 vim 创建无限的标记吗?

Ren*_*ger 6 vim

我希望能够为现有的单字母标记设置额外的标记。因此,我可以解决我目前面临的两个问题:

  1. 标记是在脚本中设置的,我不想破坏脚本用户已经设置的标记

  2. 我可以设置无限数量的标记,这样我就不必计算它们(我将它们命名为"script_mrk_" . s:mark_count)。

所以,如果表示为函数调用,我可能正在寻找一些东西

setPrivateMark(l:mark_name, l:line, l:pos)
Run Code Online (Sandbox Code Playgroud)

let line_pos = getPrivateMark(l:mark_name)
Run Code Online (Sandbox Code Playgroud)

当然,在使用setPrivateMark和之前设置它之后,解决方案应该能够抵抗对标记上方的缓冲区的更改getPrivateMark(...)

有这样的事情吗?

Ing*_*kat 3

Vim 仅在发生变化时更新其内置标记的位置;如果您需要该功能,则必须使用这些功能,并且仅限于现有标记的数量。

没有办法解决这个问题;对于简单的用户编辑,您可以挂钩CursorMovedI事件并调整记录的位置,但无法挂钩 Ex 命令,例如:append.

如果您的插件需要几个标记,那么最好允许用户配置脚本使用的标记(例如通过变量g:MyPlugin_UseMarks);几乎没有人会一直使用所有标记,但不同的人有不同的偏好。