不改变焦点的Tmux分割窗口



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

我在我的一个tmux窗格中运行一个脚本,偶尔运行"tmux split-window…",其中一些命令需要一分钟才能完成,并且可能需要输入。

我可以最终尝试在tmux窗格中输入输入,但在我输入的过程中,原始窗格执行"tmux split-window…"并且(中间单词)我的光标移动到新窗格,并且我最终将部分输入输入到错误的窗格中。

注释:这个答案是正确的,但是过时了。正确的方法是对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

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

最新更新