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