当相对位置发生变化时,Vimscript会跳跃

时间:2014-09-22 22:13:00

标签: vim

我的.vimrc中有以下别名:

inoremap ^Z ^[[s1z=``a

这允许我在插入模式下按^ZC-z)以跳回到最后一个拼写错误的单词并将其更正为第一个建议,然后跳回到光标之前的位置并重新输入插入模式。

但是,当单词的长度因校正而改变时,这不起作用。例如,使用[]表示光标,在

的上下文中按C-z
A grea idea[]

将导致

A great ide[a]

但我希望它导致

A great idea[]

我怎样才能获得这种相对跳跃?

2 个答案:

答案 0 :(得分:2)

在StackOverflow上找到一个较旧的链接,不知道它是否有同样的问题,否则,我会忍受它:How to correct vim spelling mistakes quicker?

<Esc>[s1z=`]a

[s转到最后一个拼写错误 1z =选择第一个建议 `]移动到最后一个插入点 附加文本

它还有两个更广泛的解决方案,也可能有效。

答案 1 :(得分:0)

不幸的是,标记不适用于其行中的文本更改,仅适用于上面添加/删除的行。但是,您可以使用gi命令在最后编辑的位置重新进入插入模式来避免此问题。

inoremap <C-z> <Esc>[s1z=gi