是否有办法在不改变当前焦点的情况下拆分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-window
和last-pane
命令执行之间的时间间隔输入一个字符,你可能会在错误的窗口中写一个字符。 -
这是另一种方法,缺点是它更复杂。
在后台创建一个新窗口,并获得这个窗口的
pane_id
(注意这个命令是如何被包装在$(...)
中,因为我们希望它在子进程中执行:pane_id=$(tmux new-window -d -P -F "#{pane_id}")
现在将我们刚刚创建的窗口与光标所在的窗口连接起来(不会改变光标焦点):
tmux join-pane -b -t "$pane_id"
如果你想要一个水平分割,将
-h
添加到上面的join-pane
。
我建议采用第一种方法,因为它很简单。你用它不太可能有任何实际问题。