【问题标题】:how can I make vim send command to gnu screen session如何让 vim 向 gnu 屏幕会话发送命令
【发布时间】:2010-12-03 12:44:34
【问题描述】:

我试图弄清楚如何编写 vim 脚本以将消息发送到 gnu 屏幕“窗口”。即我打开了一个屏幕会话,在一个窗口中我有一个 vim 会话,而在另一个窗口中有一个方案解释器。当我保存我的 vim 会话时,我希望它在新环境中加载的另一个窗口中重新启动解释器。除了如何在 vim 中使用“保存时”挂钩将 shell 命令发送到另一个“屏幕窗口”导致脚本终止并重新启动之外,我可以弄清楚其他所有内容。如果我能弄清楚如何发送命令,我可以终止该进程,然后启动一个新进程 - 我只需要确保它在正确的“窗口”中启动。

【问题讨论】:

    标签: vim scheme gnu gnu-screen


    【解决方案1】:

    如果你让方案解释器每隔这么多秒运行一次就足够了,你可以在第二个屏幕窗口中运行watch /path/to/scheme/interpreter /path/to/scheme/file。调整watch 运行命令的时间间隔可以使用命令行参数进行调整。 watch 手册页包含详细信息。

    【讨论】:

      【解决方案2】:

      让 vim 发出 shell 命令,并使用screen -X 向屏幕发出命令。 :at <other-window> stuff <restart-command> 的一些排列。有关更多命令,请参阅man screen 的自定义部分。

      例如,如果我在屏幕窗口 1 中使用 vim,并且我在窗口 0 中有一个 irb 会话,要重新启动 irb 会话,我会这样做

      :!screen -X at 0 stuff exit^Mirb^M
      

      (^M 通过 CTRL-V Enter 输入)。

      【讨论】:

      • 嘿,太棒了!几乎正是我正在寻找的 - 唯一的问题是它将我想要的命令发送到另一个屏幕但然后等待直到我按下回车键(或 10 秒后)让它实际“粘贴”到屏幕上?它说“来自 {username} 的命令:{command}。你认为有没有办法让屏幕在收到命令后立即接受命令?
      • 我不熟悉屏幕上的状态消息。对不起。
      • 将 msgwait 设置为 0 (C-a : msgwait 0 ) 它将摆脱延迟。您可以注册它以设置 msgwait,运行真正的命令,然后将其设置回来。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-06
      • 1970-01-01
      • 2012-06-25
      • 2013-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多