2013-07-31 2 views
2

안녕하세요. vim 인 경우 spelllang을 발견했습니다. 내가 다음에 달성하기 위해 노력하고 있어요 :키 스트로크에서 동적으로 맞춤법 검사를 변경하십시오.

  1. 내가 F7은 대화가 나는 F7을 누르면 프랑스어 또는 영어 사전 set spelllang=fr spell 또는 set spelllang=en spell
  2. 을 활성화하려면 나 한테 물어 열립니다 말을 누르면 것은 다시 spell 사용할 수 없습니다

vimrc에 이렇게 쉽게 할 수 있습니까? F9 (일반 모드) 주문 상태를 토글 링을 만들 것입니다 무엇

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

이를 추가하는 방법에 대한

답변

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> 
+0

감사합니다. 다른 스크립트의 기본으로 사용하겠습니다! – statquant

1

건배 (내가 gvim을 창문을 사용하고 있지만 그것은 중요하지 않습니다 생각). 모든 동작을 상태간에 전환하려면 상태 정보를 저장하고 동작하는 vimscript 함수를 작성해야합니다.

+0

고마워요.하지만 조금 더 진보적 인 것들을 찾고 있습니다. (이 모든 것을 위해 하나의 맵을 사용하기를 바랍니다) – statquant

1

나는 하나 개의 키를 사용하여 다음 가지고 : 당신이 <F8> 누르면이와

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> 

을 기본적으로는 영어로 어떤 철자와 철자 사이를 전환합니다. 카운트를 사용하여 호출하는 경우, 2<F8>라고 말하면 그 시점부터 포르투갈어로 철자를 바꾸거나 철자를 바꾸지 않습니다.

관련 문제