tmux分割窗口没有改变焦点

时间:2015-09-03 22:44:37

标签: tmux

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

我在我的一个tmux窗格中运行一个脚本,偶尔会运行" tmux拆分窗口......"一些命令需要一分钟才能完成并且可以请求输入。

我最终可能会尝试在其中一个tmux窗格中键入输入,但在我打字的过程中,原始窗格会执行" tmux split-window ..."和(中间的单词)我的光标移动到新窗格,我最终将输入的一部分键入错误的窗格。

1 个答案:

答案 0 :(得分:6)

注意:这个答案是正确的,但已经过时了。正确的方法是对-d命令使用split-window标志。我将这个答案作为演示如何用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

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