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

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

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

答案1

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

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

join-pane -s 2:3.1

这会将窗格 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.

答案2

如果您尝试在同一个会话内连接窗格,您会本能地想要从命令中省略“session:”。这将失败。似乎 join-pane 的 -s 和 -t 开关接受 [session]:window[.pane] 形式的参数,而不是 [session:]window[.pane]

也就是说,会话是可选的,而 : 是必需的。这很愚蠢。这相当于浏览器要求http://google.com:/作为快捷版本http://google.com:80/并给出错误http://google.com/哦哦

由于 ctrl-b ! 将当前窗格拆分为一个单独的窗口(这与我们想要执行的操作相反),并且 ctrl-b @(就在 ! 旁边)默认不受约束(意味着您不会覆盖任何内容)我建议创建此快捷方式...

bind-key @ command-prompt -p "create pane from:"  "join-pane -s ':%%'"

相关内容