2

您好,我发现了有关spelllangvim 的信息。我正在努力实现以下目标:

  1. 当我按下 F7 时,会打开一个对话框,询问我是否要激活法语或英语词典set spelllang=fr spellset spelllang=en spell
  2. 当我再次按 F7 时spell被禁用

我可以在我的 中轻松地做这样的事情vimrc吗?

干杯(我正在使用 gvim 和 windows,但我想没关系)

4

3 回答 3

3

是的,你可以做到这一点。我写了一个小脚本来说明。您可以将它按原样放入您的.vimrc.

关键是使用inputlist()它提示用户输入一个数字。当然,您可以根据需要扩展spelllang_list包含可能语言的列表。

function! <SID>ToggleSpell()
    let spelllang_list = [ 'fr', 'en' ]
    let string = []

    for i in range(len(spelllang_list))
        call add(string, i+1 . ") " . spelllang_list[i])
    endfor

    if ! &spell
        let &spell = 1
        let selection = inputlist(string)
        let &spelllang = spelllang_list[selection-1]
    else
        let &spell = 0
        echo "'spell' disabled..."
    endif
endfunction

noremap <F7> :call <SID>ToggleSpell()<CR>
于 2013-07-31T08:24:44.593 回答
1

我有以下内容,它只使用一个键:

setlocal nospell
let g:togglespell = 0
let g:default_langn = 1 "1 for English, 2 for Portuguese
function! ToggleSpell()
  if v:count != 0
    let g:default_langn = v:count
    let g:togglespell = 0 " force spelling this time
  endif
  if g:togglespell == 0
    if g:default_langn == 1
      setlocal spell spelllang=en_us
      echo "language = en_us"
    elseif g:default_langn == 2
      setlocal spell spelllang=pt
      echo "language = pt"
    else
      echom "No language corresponding to such option [1: English, 2 Portuguese]"
    endif
    let g:togglespell = 1
  else
    setlocal nospell
    let g:togglespell = 0
    echo "No spell Checking"
  endif
endfunction
noremap <F8> :<C-U>call ToggleSpell()<CR>

按下这个键<F8>,默认情况下它会在无拼写和英语拼写之间切换。如果您使用计数调用它,2<F8>那么从那时起它将在葡萄牙语拼写或不拼写之间切换。

于 2013-07-31T14:28:40.953 回答
1

怎么加

nnoremap <F7>:set spelllang=en<CR>
nnoremap <F8>:set spelllang=fr<CR>
nnoremap <F9>:set spell!

这将使 F9 切换拼写状态(在正常模式下)。如果您希望所有操作在状态之间切换,您应该编写一个 vimscript 函数来保存状态信息并对其进行操作。

于 2013-07-31T08:19:27.113 回答