如何获取 tmux 中当前窗格下方窗格的索引?

Jeb*_*bby 5 bash tmux

我试图直接在 tmux 中当前选定的窗格下获取窗格的索引,以便我可以tmux run-shell从 vim 调用该窗格。

假设我有一个如下所示的 tmux 窗格布局:

|---------------------------|
|             |             |
|      0      |      1      |
|             |             |
|---------------------------|
|                           |
|             2             |
|                           |
|---------------------------|
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过运行以下命令获取当前的窗格编号:

tmux list-panes | grep "active" | cut -d':' -f1

对于这种情况,我们会说它是0

这是我想到的第一个获取索引的解决方案:

#!/bin/bash

CUR_PANE=$(tmux list-panes | grep "active" | cut -d':' -f1)
tmux select-pane -D

UNDER_PANE=$(tmux list-panes | grep "active" | cut -d':' -f1)
tmux select-pane -U

# In case the script is used on the bottom
# pane and `select-pane` wrapped around
if [ ! $UNDER_PANE -gt $CUR_PANE ]; then
    echo "No pane under current."
    exit 1
fi

echo $CUR_PANE
echo $UNDER_PANE
Run Code Online (Sandbox Code Playgroud)

但这对我来说似乎是一种快速而肮脏的方法,因为我实际上必须切换到窗格,然后返回到原始窗格。

有没有一种更干净的方法可以在不将当前窗格留在 tmux 中的情况下执行此操作?

ymo*_*nad 4

您可以使用tmux display以下别名tmux display-message参考

$ tmux display -p -t '{down-of}' '#{pane_index}'
Run Code Online (Sandbox Code Playgroud)

-t {down-of}表示从活动窗格下方的窗格中获取信息:参考

#{pane_index}表示使用面板索引格式化消息:参考

-p表示将消息写入标准输出