是否可以让 vim 标记(例如 mm)指向它们最初设置的字符而不是字符的原始行/列位置?
例如,如果我在下面的示例句子中在单词“politicians”(第 1 行,第 72 列)的第一个字母上键入 mm,然后删除单词“entries”,然后键入 `m,我的光标将返回到原始光标位置(第 1 行,第 72 列),现在是单词“politicians”中字母“a”的位置。我理解这是 vim 的预期行为,但是我希望 `m 能够将我返回到政客的 'p',即使它的行/列位置已经改变。
例句:
在对政客和企业进行匿名修改以及发生肯尼迪遇刺事件等事件后,政府实施了为期 10 天的封锁。
我发现我期望的行为对我的写作/编辑方式更有用(尤其是在使用 Vim 超出其编码的原始目的时)。Viemu 是一个插件,它为 Word 添加了 Vim 的许多功能,可以按照我想要的方式处理标记。不幸的是,Viemu 并不是 Vim 的完美移植,我更喜欢在 Vim 中编写所有文本(电子邮件、文章等,而不仅仅是代码)。不知道如何让 Vim 以我想要的方式处理标记是我不专门使用它的主要原因之一。
先感谢您,
PS这是我第一次在 stackexchange/superuser 上发帖,所以如果我没有遵循正确的格式/协议来提问,请原谅我并请纠正我。
答案1
虽然标记会根据添加/删除的行进行调整,但列位置不会;您说得对。您期望的行为肯定有多种好处;我猜它只是尚未实现,可能是因为涉及的复杂性。(而且它会破坏与 vi 和以前版本的 Vim 的兼容性,这一点不容小觑。)
虽然可以使用:autocmd
s 来挂钩某些编辑操作,但这通常是不可能的(例如:s
无法被拦截的东西),因此在 Vimscript 中模拟该行为会很困难,而且我不知道有任何这样的实现。