Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何更快地纠正Vim拼写错误?_Vim_Spell Checking - Fatal编程技术网

如何更快地纠正Vim拼写错误?

如何更快地纠正Vim拼写错误?,vim,spell-checking,Vim,Spell Checking,我通常的Vim工作流程是: 在插入模式下,拼写错误 按^X s获取一些建议 按Esc键接受第一个选项 在此之后,我处于命令行模式的中间,而不是以前的插入模式。我可以使用A,但这只适用于在行尾打字的情况。还有别的办法吗?最理想的情况是,我想要一个命令,可以在不移动光标的情况下纠正第一个建议的最后一个错误。我无法提供“最佳”解决方案(尽管我怀疑有办法) 但是,您可以使用gi在文件中上次离开的位置进入插入模式。(help gi对此进行了更有力的解释)。您可以使用Ctrl+Y在弹出菜单中接

我通常的Vim工作流程是:

  • 在插入模式下,拼写错误

  • ^X s
    获取一些建议

  • 按Esc键接受第一个选项


在此之后,我处于命令行模式的中间,而不是以前的插入模式。我可以使用

A
,但这只适用于在行尾打字的情况。还有别的办法吗?最理想的情况是,我想要一个命令,可以在不移动光标的情况下纠正第一个建议的最后一个错误。

我无法提供“最佳”解决方案(尽管我怀疑有办法)


但是,您可以使用gi在文件中上次离开的位置进入插入模式。(
help gi
对此进行了更有力的解释)。

您可以使用Ctrl+Y在弹出菜单中接受元素。请参见
:帮助完成\u CTRL-Y

我用我的
中的以下重新映射修复了它。vimrc

imap <F2> <Esc>mti<C-X>s<Esc>`tla
imap mtis`tla

在插入模式下按F2键以更正上一个错误,然后返回到原来的插入模式。它会覆盖
t
标记。

这项功能相当有效:

imap ^L <Esc>[s1z=`]a
imap^L[s1z=`]a
[s
移动到最后一个拼写错误
1z=
选择第一个建议
`
移动到最后一个插入点

a
append text

对PDug答案的改进:要使拼写更正与插入分开撤消,请使用以下命令:

imap <c-l> <c-g>u<Esc>[s1z=`]a<c-g>u
imap u[s1z=`]au
u
插入撤消中断
其余的都一样

这样,如果您不喜欢所选的更正,可以使用
u
撤消它。如果没有撤消中断,这将撤消整个插入。请注意,映射结束时的撤消中断可确保更正后添加的文本可以与更正本身分开撤消

此外,我发现在插入和正常模式下都可以方便地将其映射到CTRL+F(很容易访问),如下所示:

imap <c-f> <c-g>u<Esc>[s1z=`]a<c-g>u
nmap <c-f> [s1z=<c-o>
imap u[s1z=`]au
nmap[s1z=

这样,您可以快速修复最后一个错误(相对于光标)。

我为这个用例创建了一个插件


它提供了插入模式映射CTRL-A,该映射完全按照要求执行,并用第一个建议更正上次拼写错误,然后返回到上次停止的插入模式。它还说明了由于拼写更正而导致的行长度更改,而gi和“]则没有。

将光标置于插入模式,但就在插入单词之后,不是我所在的位置。看起来是Esc离开了插入模式。因此,
gi
在这种情况下没有帮助。啊,很抱歉。。。我应该在发帖前试一下。您下面的映射似乎也能做到这一点(假设您总是需要第一个建议的拼写)。我使用的是
gi
,没有任何问题。如何调用此映射?我尝试在插入模式下输入
^L
,但无效。使用
^L
有什么特殊原因吗?传统上,拼写检查被映射到
。然而,
F10
似乎已经被gVim使用,所以我最终决定使用典型的
Microsoft拼写检查绑定。@SergeStroobandt
L
位于主行。此外,Mac默认情况下需要fn+f10才能获得f10,尽管这很容易更改。要创建
^L
字符,您必须在按住
CTRL
键的同时按下
v
,然后按下
L
键。