所以我有以下小测试用例
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
那么任何人都可以解释为什么可视模式 d 键绑定根本无法显示任何消息而 e 键绑定工作没有问题
请注意,问题根本与键绑定无关,而是与调用输入函数后有 if 语句有关
我已经在 MacVim 和 linux 上的终端 vim 上测试了它,在从 mercurial 源代码编译的最新 vim 版本上,都有这个问题
更新:有些人不明白问题是什么。详细解释一下,当您在可视模式下按 d 时,您会收到输入提示,当您回答它时,您在命令行中看不到任何消息,而当您按 e 并回答提示时,您会看到消息 hi hi hi 两次一行和“按 ENTER 或键入命令继续”消息