【问题标题】:tmux split-window without changing focustmux 拆分窗口而不改变焦点
【发布时间】:2015-09-03 22:44:37
【问题描述】:

有没有办法在不改变当前焦点的情况下在 tmux 中拆分窗口?

我正在我的一个 tmux 窗格中运行一个脚本,该窗格偶尔会运行“tmux split-window ...”,其中包含一些需要一分钟才能完成的命令,并且可能会请求输入。

我最终可能会尝试在其中一个 tmux 窗格中输入输入,但在我输入的中间,原始窗格执行“tmux split-window ...”并且(中间词)我的光标转移到新窗格,我最终将部分输入输入到错误的窗格中。

【问题讨论】:

    标签: tmux


    【解决方案1】:

    注意:这个答案是正确的,但是已经过时了。正确的方法是为split-window 命令使用-d 标志。我留下这个答案作为演示如何使用 tmux 进行一些牦牛剃须。

    tmux 提供的split-window 命令标志将是解决此问题的正确方法。 很遗憾 tmux 没有提供这样的命令标志更新:有一个 -d split-window 标志可以做到这一点。

    • 简单的解决方案是在split-window之后立即切换到上一个窗格:

      tmux split-window
      tmux last-pane
      

      这也可以写成单行:

      tmux split-window\; last-pane
      

      此解决方案的缺点是*理论上*如果您在 split-windowlast-pane 命令执行之间的时间间隔内键入字符,最终可能会在错误的窗口中写入字符。

    • 这是另一种方法,缺点是它更复杂。

      在后台创建一个新窗口并获取此窗口的pane_id(注意此命令是如何包装在$(...) 中的,因为我们希望它在子进程中执行:

      pane_id=$(tmux new-window -d -P -F "#{pane_id}")
      

      现在将我们刚刚创建的窗口与光标所在的窗口连接起来(不会改变光标焦点):

      tmux join-pane -b -t "$pane_id"
      

      如果您想要水平拆分,请将-h 添加到上面的join-pane

    我建议采用第一种方法,因为它很简单。您不太可能遇到任何实际问题。

    【讨论】:

    • 哦,是的。我错过了它,因为-d 标志没有为split-window 命令记录(尽管它在标志列表中)。请提供此作为答案,我将更新我的帖子以表明它已过时。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-14
    • 1970-01-01
    • 1970-01-01
    • 2020-12-27
    • 2012-04-18
    • 1970-01-01
    相关资源
    最近更新 更多