6

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

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

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

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

setPrivateMark(l:mark_name, l:line, l:pos)

let line_pos = getPrivateMark(l:mark_name)

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

有这样的事吗?

4

2 回答 2

3

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

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

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

于 2013-04-11T12:40:49.493 回答
0

无限标记我不知道,但你可以创建一个字典类型,键是你的“标记”名称,值是光标的位置。

位置可以通过

getpos() and setpos()

或者你想要实际的代码?

于 2013-04-11T12:21:22.420 回答