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)
有什么建议么?
谢谢。
您的函数的问题在于这: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=
无需颜色即可进行拼写检查。
如果您希望颜色可以切换,您可以创建一些映射来放置突出显示规则。