我平常的Vim工作流程是:
在插入模式下,拼错了。
按^X s
获取一些建议。
按Esc接受第一个。
在此之后,我处于行中间的命令模式,而不是之前我所在位置的插入模式。我可以使用A
,但只有当我在行尾输入时才有效。还有另一种方法吗?最理想的是,我想要一个命令,在不移动光标的情况下将最后一个错误纠正到第一个建议。
答案 0 :(得分:26)
对PDug答案的改进:要使拼写修正与插入分开撤消,请使用:
imap <c-l> <c-g>u<Esc>[s1z=`]a<c-g>u
<c-g>u
插入撤消中断
其余的都一样。
这样,如果您不喜欢所选的更正,可以使用<Esc>u
撤消它。如果没有撤消中断,这将撤消完整插入。请注意,映射结尾处的撤消中断可确保在更正后添加的文本可以与更正本身分开撤消。
另外,我发现在插入和普通模式下将它映射到 CTRL + F (很容易到达)很方便,如下所示:
imap <c-f> <c-g>u<Esc>[s1z=`]a<c-g>u
nmap <c-f> [s1z=<c-o>
这样,您可以快速修复最后一个错误(相对于光标)。
答案 1 :(得分:22)
这很有效:
imap ^L <Esc>[s1z=`]a
[s
移动到最后一个拼写错误
1z=
选择第一个建议
`]
移动到最后一个插入点
a
附加文字
答案 2 :(得分:9)
我无法提供“最佳”解决方案(尽管我怀疑有一种方法)。
但是,您可以使用 g i 在您上次离开文件的位置输入插入模式。 (help gi
更有说服力地解释了这一点。
答案 3 :(得分:2)
您可以使用 Ctrl + Y 接受弹出菜单中的元素。请参阅:help complete_CTRL-Y
。
答案 4 :(得分:2)
我使用.vimrc
中的以下重新映射修复了它。
imap <F2> <Esc>mti<C-X>s<Esc>`tla
在插入模式下按F2键以纠正上一个错误并返回到您所在的插入模式。它会覆盖t
标记。
答案 5 :(得分:0)
我为这个用例https://github.com/arecarn/vim-spell-utils
创建了一个插件它提供了插入模式映射CTRL-A,它完全按照要求进行操作,并使用第一个建议更正上一个拼写错误,然后返回到上次中断的插入模式。它还解释了由于拼写更正导致的行长度的变化,而gi和`]则没有。