Vim中光标下的拼写检查单词

Vim中光标下的拼写检查单词,vim,spell-checking,Vim,Spell Checking,我想有一个快速的方法拼写检查下的Vim光标的单词 在native Vim中执行此操作需要我: (1) 激活拼写 (2) 检查单词 (3) 取消拼写 (1)和(3)的原因是我不希望拼写模式一直处于启用状态(例如,我可能正在编写函数/类文档,并且不希望拼写突出显示代码中的非自然语言单词) 我想这样做可能会奏效: nnoremap <F1> :setlocal spell<CR>z=:setlocal nospell<CR> 有什么建议吗 谢谢。函数的问题是:no

我想有一个快速的方法拼写检查下的Vim光标的单词

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

(1) 激活拼写 (2) 检查单词 (3) 取消拼写

(1)和(3)的原因是我不希望拼写模式一直处于启用状态(例如,我可能正在编写函数/类文档,并且不希望拼写突出显示代码中的非自然语言单词)

我想这样做可能会奏效:

nnoremap <F1> :setlocal spell<CR>z=:setlocal nospell<CR>
有什么建议吗


谢谢。

函数的问题是
:normal(“z=”)
不是调用normal命令的正确方法。它应该是
:normal z=
,因为它不是一个函数。其次,不需要前导的
。所以函数应该是

function! s:spell_check_current()
  setlocal spell
  normal z=
  setlocal nospell
endfunction
nnoremap <F1> :call <SID>spell_check_current()<CR>
这使得
z=
可以在不使用颜色的情况下进行拼写检查


如果希望颜色可切换,可以创建一些映射以将高亮显示规则放置到位。

是的,因为查询是由
z=
命令完成的,这确实很棘手。不能立即再次关闭拼写检查。My通过一个
:autocmd
来解决这个问题,该命令在拼写更正后不久就会触发。您可以使用插件的基础结构包装
z=
命令。将以下内容放入您的
~/.vimrc

nnoremap <silent> <expr> z= SpellCheck#mappings#SpellSuggestWrapper('call SpellCheck#mappings#SpellRepeat()')
xnoremap <silent> <expr> z= SpellCheck#mappings#SpellSuggestWrapper('call SpellCheck#mappings#SpellRepeat()')
nnoremap z=SpellCheck#mappings#SpellSuggestWrapper('call SpellCheck#mappings#SpellRepeat()'))
xnoremap z=SpellCheck#mappings#SpellSuggestWrapper('call SpellCheck#mappings#SpellRepeat()'))

谢谢你,英戈。这是一个很好的插件,但对于我心目中的这个特定用例来说,这个解决方案太重了。我希望有一个更轻的东西——充其量是一个功能。但总的来说,我确实喜欢你的插件!谢谢,弗迪诺夫。是的,我想我可以让我的关键地图在我确实需要拼写颜色的情况下切换它们。
highlight clear SpellRare 
highlight clear SpellBad 
highlight clear SpellCap 
highlight clear SpellLocal
nnoremap <silent> <expr> z= SpellCheck#mappings#SpellSuggestWrapper('call SpellCheck#mappings#SpellRepeat()')
xnoremap <silent> <expr> z= SpellCheck#mappings#SpellSuggestWrapper('call SpellCheck#mappings#SpellRepeat()')