在活动窗格上运行 shell 命令的 Tmux 命令?

Dan*_*dez 4 tmux

我知道该run-shell命令在“全局”会话中运行代码,该会话不一定链接到任何活动窗口、窗格或会话。但是,我想绑定一个键以在活动窗格的 shell 中运行命令。

用例:将键映射到vim当前活动窗格中的打开(可能具有某些参数)。就像你会跑一样run-shell "command command-parameters*"

有没有办法在 tmux 中做到这一点?

ato*_*ack 6

向当前窗格发送命令

如果您运行tmux send-keys vim Enter,这会将文字按键发送到您当前的窗格以生成vim。然后,您可以将其绑定到您喜欢的任何组合键。

警告:因为这是发送文字按键,该窗格需要一个已经运行的 shell 来解释发送的内容(例如 bash / zsh /fish)。

针对特定窗格

您可以使用该-t标志定位特定目的地。例如,要在当前会话中打开 vim,窗口 5,窗格 2:

tmux send-keys -t ":5.1" vim Enter

目标的语法非常灵活(请参阅联机帮助页的 COMMANDS 部分,了解 target-session 和 target-window),这只是一个示例:

session-name:window-id.pane-id

当 session-name 为空时(如上例所示),使用当前会话。在5你指的是哪个窗口标识。在.1指定在窗口#5的第二片材(从0计数)。

$TMUX_PANE

tmux 中的每个窗格都有自己唯一的 ID(并且在所有会话中都是唯一的)。它通过$TMUX_PANE环境变量公开。这也可以用作各种 tmux 命令的目标,例如tmux rename-window -t $TMUX_PANE $new_name.