在终端vim中,如何通过system()运行shell命令时防止ghost回显

时间:2014-03-07 12:56:26

标签: shell vim

在终端vim中,即使与vim -u NONE一起投放,在呼叫system()期间按下的所有按键也会被回复,每次呼叫system()一次。要在vim中重现:

:call system("sleep 1")|call system ("sleep 1")|call system ("sleep 1")

在按下Enter键后立即按asdf或其他任何内容,您应该看到它被回复3次。这并不可怕,但是角色经常会留下并要求:redraw!摆脱它。

所以问题是,我该如何防止这种回声? :redraw!不是我正在寻找的答案。我的特定用例是完整功能的一部分,重绘会导致闪光灯不适合我。

不起作用的事情:

  1. silent! call system("sleep 1")
  2. system("stty -echo; sleep 1")

2 个答案:

答案 0 :(得分:0)

我可能错了,但我认为你无能为力。这是vim实现的方式,这是一个问题,并且对UI进行懒惰重绘是其中的一部分。所以这不是一个错误,它是一个功能™©®

答案 1 :(得分:0)

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