2012-09-27 2 views
1

그래서 나는 다음과 같은 한 작은 테스트 케이스는빔 시각적 키 입력 이상한 행동

vnoremap <silent> d :<C-u>call Test()<cr> 
vnoremap <silent> e :<C-u>call Test2()<cr> 
fun! AskUser() 
    let v = input('is this really ok with you? (y/n) ') 
    redraw 
    return v 
endfun 

fun! Test() range 
    call AskUser() 
    if 1 
     echo 'hi hi hi' 
     echo 'hi hi hi' 
    endif 
endfun 

fun! Test2() range 
    call AskUser() 
    echo 'hi hi hi' 
    echo 'hi hi hi' 
endfun 

그래서 아무도 설명 할 수있는 동안 문제없이 작동 키 바인딩 전자

문제는 키 바인딩과 전혀 관련이 없다는 사실에 유의하십시오. 입력 함수 호출 후 if 문이 있습니다.

저는 MacVim에서 테스트했으며 최신 vim vers 이온 소스 코드에서 컴파일 된 모든 이온이 문제가 있습니다.

업데이트 : 일부 ppl은 문제가 무엇인지 이해하지 못했습니다. 글쎄 비주얼 모드에서 d 버튼을 눌렀을 때 입력 프롬프트가 나타나고 응답 할 때 명령 행에 아무 메시지도 보이지 않는 동안 e를 누르고 프롬프트에 응답하면 메시지가 표시됩니다. hi hi hi twice '계속하려면 Enter 키를 누르거나 명령을 입력하십시오.'메시지

+0

모두' echo'메시지는 리눅스에서'VIM - Vi IMproved 7.3'과 함께 출력됩니다. – Birei

+0

일부 ppl은 당신이 vim -N -u none을 실행하여 문제를 재현 할 수 있다고 말할 수 있습니다. – Troydm

+0

둘 다 GVIM 7.3.000을 사용하여 "hi hi hi"를 인쇄합니다. _latest_ 대신 정식 버전 (포괄적 패치 번호)을 기재하십시오. 패치는 거의 매일 게시됩니다. –

답변

1

나는 다른 동작의 이유를 알지 못하지만 기능이 조건부 if으로 끝나고 마지막 문장이 endif 인 경우 메시지가 화면에 표시되지 않습니다.

코드로 만 vimrc 사용자 정의를 작성했으며 vim -N -u new-custom-vimrc infile으로 실행했습니다. 그와 마찬가지로, 나는 질문의 동작을 재현 할 수 있지만, 내가 좋아하는, 함수의 endif으로 마지막 문장을 피할 때 작동하는 것 같다 :

fun! Test() range 
    call AskUser() 
    if 1 
     echo 'hi hi hi' 
     echo 'hi hi hi' 
    endif 
    let dummy = 1 
endfun 

또한이 작동합니다

fun! Test() range 
    call AskUser() 
    if 0 
     return 
    endif 
    echo 'hi hi hi' 
    echo 'hi hi hi' 
endfun 
+0

흥미 롭습니다. 당신 말이 맞아요. – Troydm