だから私は次の小さなテストケースを持っています
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
e キーバインディングが問題なく動作するのに、ビジュアルモード d キーバインディングがメッセージをまったく表示しない理由を誰でも説明できますか
この問題はキーバインドとはまったく関係がなく、入力関数の呼び出しの後に if ステートメントがあることに注意してください。
私はMercurialソースコードからコンパイルされた最新のvimバージョンでLinuxのMacVimとターミナルvimでテストしましたが、すべてこの問題があります
更新:問題が何であるかを理解していない人もいました。詳しく説明すると、ビジュアル モードで d を押すと入力プロンプトが表示され、それに答えるとコマンド ラインにメッセージは表示されませんが、e を押してプロンプトに答えると、メッセージ hi hi hi が 2 回表示されます。行と「Press ENTER or type command to continue」というメッセージ