在终端vim中,如何防止通过system()运行shell命令时出现重影回音

在终端vim中,如何防止通过system()运行shell命令时出现重影回音,shell,vim,Shell,Vim,在终端vim中,即使在使用vim-u NONE运行时,在调用system()期间按下的所有键都会回显,每次调用system()都会回显一次。要在vim中复制,请执行以下操作: :call system("sleep 1")|call system ("sleep 1")|call system ("sleep 1") 点击回车键后,立即按asdf或其他任何键,您应该会看到它被回声反射了3次。这并不可怕,但重要的是角色经常会停留在周围,需要重新绘制以摆脱 所以问题是,我如何防止这种回声:重画不是

在终端vim中,即使在使用
vim-u NONE
运行时,在调用
system()
期间按下的所有键都会回显,每次调用
system()
都会回显一次。要在vim中复制,请执行以下操作:

:call system("sleep 1")|call system ("sleep 1")|call system ("sleep 1")
点击回车键后,立即按
asdf
或其他任何键,您应该会看到它被回声反射了3次。这并不可怕,但重要的是角色经常会停留在周围,需要重新绘制以摆脱

所以问题是,我如何防止这种回声<代码>:重画不是我想要的答案。我的特定用例是一个完整函数的一部分,重画会导致一个不适合我的闪光

不起作用的事情:

  • 安静!呼叫系统(“睡眠1”)
  • system(“stty-echo;sleep 1”)

  • 我可能错了,但我认为你对此无能为力。在这里,实现vim的方式是一个问题,对UI进行惰性重画是其中的一部分。所以这不是一个bug,而是一个特性™©®

    我通过使用vim的python集成进行系统调用来解决这个问题。Python在运行命令时不会回显按键。

    您不必执行
    :重画,但只要控制LYeah,延迟重画就可以了,我只想首先抑制缓冲输出。您可能是对的,但这可能是不可能的,vim可能只是在进入系统调用时将terminal mode设置为echo,这将使它在长时间运行时的行为与bash一样。