在 Vim 中对光标下的单词进行拼写检查

Jee*_*eet 5 vim spell-checking

我想要一种在 Vim 中快速检查光标下单词拼写的方法。

在本机 Vim 中执行此操作需要我:

(1) 激活拼写 (2) 检查单词 (3) 停用拼写

(1) 和 (3) 的原因是我不希望始终打开拼写模式(例如,我可能正在编写函数/类文档,并且不希望拼写突出显示代码中的非自然语言单词) 。

我认为这样的事情可能会起作用:

nnoremap <F1> :setlocal spell<CR>z=:setlocal nospell<CR>
Run Code Online (Sandbox Code Playgroud)

但是,当然,最后一个子句 ( :setlocal nospell) 会干扰并取消拼写检查。

我也尝试了以下方法,但这也不起作用:

function! s:spell_check_current()
  :setlocal spell
  :normal("z=")
  :setlocal nospell
endfunction
nnoremap <F1> :call <SID>spell_check_current()<CR>
Run Code Online (Sandbox Code Playgroud)

有什么建议么?

谢谢。

FDi*_*off 4

您的函数的问题在于这:normal("z=")不是调用正常命令的正确方法。应该只是:normal z=因为它不是一个函数。:其次,不需要领先。所以函数是

function! s:spell_check_current()
  setlocal spell
  normal z=
  setlocal nospell
endfunction
nnoremap <F1> :call <SID>spell_check_current()<CR>
Run Code Online (Sandbox Code Playgroud)

虽然这会打开拼写检查窗口,但它不允许用户输入任何内容,因此这可能不起作用。


相反,您应该关闭拼写检查的突出显示,因为这似乎是最让您烦恼的。

加载配色方案后添加这些应该会禁用颜色。

highlight clear SpellRare 
highlight clear SpellBad 
highlight clear SpellCap 
highlight clear SpellLocal
Run Code Online (Sandbox Code Playgroud)

这使得z=无需颜色即可进行拼写检查。

如果您希望颜色可以切换,您可以创建一些映射来放置突出显示规则。