Tmux:如何将窗口链接为拆分窗口?

pie*_*zym 35 tmux

如何从完全不同的 tmux 会话中抓取一个窗口并将其作为水平/垂直拆分附加到当前窗口?

mmr*_*ins 46

听起来您正在寻找连接窗格。从技术上讲,对于您问题的第二部分,您希望将窗格加入当前窗口,而不是其他会话的完整窗口,因为这可能包括多个窗格。

这是一个例子。假设您在会话 0、窗口 4 和会话 2 中您想要窗口 3 的窗格 1。在 tmux 提示中(ctrl+b :默认情况下)

join-pane -s 2:3.1
Run Code Online (Sandbox Code Playgroud)

这会将窗格 1 从窗口 3、会话 2(-s 是源窗口并采用格式 session:window.pane)移动到当前会话(会话 0)。

以下是 join-pane 的完整文档,您可以从 tmux 手册页获取。对我来说,阅读文档最令人困惑的部分是找出指定会话、窗口和窗格编号的 src-pane 预期的格式(session:window.pane根据上面的示例)。您还可以命名会话和窗口并使用这些名称而不是索引号。

 join-pane [-dhv] [-l size | -p percentage] [-s src-pane] [-t dst-pane]
   (alias: joinp)
   Like split-window, but instead of splitting dst-pane and 
   creating a new pane, split it and move src-pane into the 
   space.  This can be used to reverse break-pane.
Run Code Online (Sandbox Code Playgroud)

  • 我可以复制窗格而不是移动它吗? (9认同)

Bru*_*sky 17

如果您尝试从同一会话中加入窗格,您会本能地希望从命令中省略“会话:”。这将失败。似乎 -s 和 -t 切换到 join-pane 以 [session]:window[.pane] 而不是 [session:]window[.pane] 的形式接受参数

也就是说,会话是可选的,而 : 是强制性的。这是愚蠢的。这将是需要的浏览器equivelent http://google.com:/作为快捷版http://google.com:80/并给了一个错误,以http://google.com/ O_O

由于 ctrl-b !将当前窗格分成一个单独的窗口(这与我们想要做的相反),并且 ctrl-b @(就在旁边!)默认情况下是未绑定的(意味着您没有覆盖任何内容)我建议创建此快捷方式...

bind-key @ command-prompt -p "create pane from:"  "join-pane -s ':%%'"
Run Code Online (Sandbox Code Playgroud)