【问题标题】:Spell-check word under cursor in VimVim中光标下的拼写检查
【发布时间】:2014-04-06 11:59:45
【问题描述】:

我想在 Vim 中快速检查光标下的单词的拼写。

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

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

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

我认为这样的事情可能会奏效:

nnoremap <F1> :setlocal spell<CR>z=:setlocal nospell<CR>

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

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

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

有什么建议吗?

谢谢。

【问题讨论】:

    标签: vim spell-checking


    【解决方案1】:

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

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

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


    相反,您应该关闭突出显示以进行拼写检查,因为这似乎是您最讨厌的。

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

    highlight clear SpellRare 
    highlight clear SpellBad 
    highlight clear SpellCap 
    highlight clear SpellLocal
    

    这使z= 可以在没有颜色的情况下进行拼写检查。

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

    【讨论】:

    • 谢谢,FDinoff。是的,我想我可以让我的键盘映射来切换拼写颜色,以备不时之需。
    【解决方案2】:

    是的,因为z= 命令完成了查询,这确实很棘手。不能立即再次关闭拼写检查。我的SpellCheck plugin 通过在拼写更正后不久触发的: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()')
    

    【讨论】:

    • 谢谢,英戈。这是一个不错的插件,但对于我想到的这个特定用例来说,它的解决方案太重了。我希望有更轻量级的东西——充其量是一个功能。但总的来说,我确实喜欢你的插件!
    猜你喜欢
    • 1970-01-01
    • 2016-05-02
    • 1970-01-01
    • 1970-01-01
    • 2013-10-05
    • 2014-12-29
    • 2011-08-17
    • 1970-01-01
    • 2013-08-14
    相关资源
    最近更新 更多