当我有多个窗口时,如何将现有窗格移动到tmux 中的另一个窗口,反之亦然?
我来自screen,在那里我可以切换到窗格,然后切换窗口,直到到达我想要的那个;tmux似乎不允许这样做。
jas*_*yan 250
执行此操作的命令join-pane
在 tmux 1.4 中。
Run Code Online (Sandbox Code Playgroud)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.
为了简化这一点,我在我的中有这些绑定.tmux.conf
:
# pane movement
bind-key j command-prompt -p "join pane from:" "join-pane -s '%%'"
bind-key s command-prompt -p "send pane to:" "join-pane -t '%%'"
Run Code Online (Sandbox Code Playgroud)
第一个从目标窗口抓取窗格并将其连接到当前窗口,第二个执行相反的操作。
然后,您可以通过在会话中运行以下命令来重新加载 tmux 会话:
$ tmux source-file ~/.tmux.conf
Run Code Online (Sandbox Code Playgroud)
Bru*_*sky 201
join-pane 就是答案。根据 tmux 文档,我尝试使用它时也遇到了问题。我发现-t
和-s
开关似乎接受[session]:window
而不是[session:]window
。也就是说,指定会话是可选的,但包括:
是强制性的。(我正在使用 tmux 1.5)
因此,为了将窗格添加到当前窗口并将窗口 1 放入窗格中,命令将是 ( Ctrl+B或任何您的绑定键,然后是)...
:join-pane -s :1
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用默认情况下的 break-pane 将它们分开:Ctrl+B !如果您想将其绑定到快捷方式,我建议不要覆盖像 s 这样的默认绑定,因为在此过程中您会在互联网上寻找答案涉及选择会话,它不会在您的系统上工作。注意休息窗格势必!和@紧挨着它,而不是绑定到默认任何东西。出于这个原因,我建议这种绑定......
bind-key @ command-prompt -p "create pane from:" "join-pane -s ':%%'"
Run Code Online (Sandbox Code Playgroud)
或者,要有一个交互式选择器......
bind-key @ choose-window 'join-pane -h -s "%%"'
bind-key C-@ choose-window 'join-pane -s "%%"'
Run Code Online (Sandbox Code Playgroud)
或者,要始终加入最近访问过的窗口...
bind-key @ join-pane -h -s !
Run Code Online (Sandbox Code Playgroud)
注意:这-h
会导致它水平堆叠窗格(垂直拆分),而不是相反的默认行为。
最重要的是,无论您选择捷径,您都可以学习。因为如果你只是设置它而忘记它,当你发现自己在一个外国服务器上时,你会感到沮丧。让我们面对现实,终端多路复用器为您提供的最重要的事情是远程服务器上的可靠会话。
这完成了我从 GNU Screen 到 Tmux 的转换。我永远不会回头。
享受!
小智 58
我想我更喜欢我用来将窗格移动到他们自己的窗口的东西。我用
break-pane -t :
Run Code Online (Sandbox Code Playgroud)
我通过实验弄清楚了,但它似乎工作得很好。您可以轻松地对其进行键绑定或别名,无需编写脚本。
小智 26
默认情况下,Ctrl+ b,!将打破该活动窗格到一个新的窗口,并切换到它。
tmux
此键执行的命令是break-pane
(alias: breakp
),如(alias: ) 命令输出中所示,cmd-break-pane.c
在key-bindings.c 中实现并绑定为默认值:list-keys
lsk
bind-key -T prefix ! break-pane
Run Code Online (Sandbox Code Playgroud)
小智 20
在查看其他答案并仔细阅读 tmux 手册页后,我暂时确定了以下绑定:
bind-key S choose-window 'join-pane -v -s "%%"'
bind-key V choose-window 'join-pane -h -s "%%"'
Run Code Online (Sandbox Code Playgroud)
这将让您以交互方式选择要加入的窗口,并镜像我的小写s
/v
绑定以创建新的垂直/水平拆分。如果有人知道如何选择单个窗格而不是窗口,请告诉我。
小智 14
如果您不想在提示中键入窗格标识符,也可以使用
bind-key j "join-pane -s !"
Run Code Online (Sandbox Code Playgroud)
这会将最后一个活动窗格/窗口加入当前窗口。
您不必更改键绑定。
当您希望移动的窗格具有焦点时,键入Prefix然后:join-pane -t :1
在1
同一会话中目标窗口的编号是什么。您可以通过在其名称前加上project:3
. 对我来说,join-pane
标签自动完成从j
.
添加-h
或-v
切换到命令以设置在目标中创建的新拆分的方向,或者直接转到它并使用Prefix +space重新排列。
归档时间: |
|
查看次数: |
131665 次 |
最近记录: |