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

时间:2019-02-17 07:21:22

标签: bash tmux

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

假设我的tmux窗格布局如下:

|---------------------------|
|             |             |
|      0      |      1      |
|             |             |
|---------------------------|
|                           |
|             2             |
|                           |
|---------------------------|

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

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

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

是否有一种更干净的方法可以将当前窗格保留在tmux中?

1 个答案:

答案 0 :(得分:3)

您可以使用tmux display的别名,它是tmux display-message的别名:Reference

$ tmux display -p -t '{down-of}' '#{pane_index}'

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

#{pane_index}意味着使用面板索引Reference

格式化消息

-p意味着将消息写到标准输出