2

spelllangこんにちは、 if vimについて発見しました。私は次のことを達成しようとしています:

  1. set spelllang=fr spellF7 キーを押すと、フランス語または英語の辞書をアクティブにするかどうかを尋ねるダイアログが開きます。set 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

私は次のものを持っています。これは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 に答える