我经常在 tmux 中加入窗格,并希望创建一个绑定,提示我加入窗口,同时仍让我看到窗口编号和标题。我的第一个方法是基于以下答案之一这个问题:
bind-key < command-prompt -p "create pane from #(tmux list-windows|awk -vORS=' ' '/^[0-9]/{print $1 $2}'):" "join-pane -s ':%%'"
但是 tmux 不会对其他命令(例如“display-message”)进行插值,并且提示本身占据了状态行,因此我看不到窗口编号和标题。
我的第二种方法是尝试利用 choose-window,它显示一个交互式窗口列表:
绑定<选择窗口“加入窗格-hs %%”
这基本上是可行的,但在我选择时它会占用整个当前窗口。我想做一些像 vim 中的 bufexplore 所做的事,首先将窗口拆分,然后在新窗格中出现提示,我可以从中选择要拉入的窗口。以下似乎非常接近我想要的,但我只剩下用于显示提示的窗格:
bind < split-window -h \; choose-window 'join-pane -hs %%'
我想移动窗口,但据我所知,您不能将窗口移动到窗格(或者在不加入的情况下移动窗格),并且以下操作不起作用:
bind < split-window -h ; choose-window 'move-window -s %%'
我怀疑该方法涉及类似以下操作序列:
- 分割窗口
- 选择窗口(窗格)
- 连接窗格
- 杀死前一个窗格(包含选择窗口提示的窗格)
但是,当我尝试做以下事情时:
split-window -h ; choose-window 'join-pane -hs %%' ; kill-pane -t.-1
被杀死的窗格是我从其启动的窗格,而不是用于显示提示的窗格。事实上,更改 kill-pane 的值或先发出 select-pane 似乎没有什么区别。
也许这无法完成,也许有办法将窗口/0 窗格移动到新窗格,但我不知道该怎么做。也许有一些交互式命令和调用的组合
run "tmux <command> etc etc %%"
这样可以解决问题,但我不明白。有什么想法吗?
答案1
join-pane
您可以在重新分割窗口之前关闭最初的临时窗格:
bind < split-window -h \; choose-window 'kill-pane ; join-pane -hs %%'