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

Tmux command to run shell command on active pane?

我知道 run-shell 命令 运行 是 "global" 会话中的代码,它不一定链接到任何活动的 window、窗格或会话。但是,我想将一个键绑定到 运行 活动窗格的 shell 中的命令。

用例:将键映射到当前活动窗格中的打开 vim(可能使用某些参数)。就像你 运行 run-shell "command command-parameters*".

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

正在向当前窗格发送命令

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

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

针对特定窗格

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

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

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

session-name:window-id.pane-id

当session-name为空时(如上例),使用当前会话。 5 标识您指的是哪个 window。 .1 指定 window #5 中的第二个窗格(从 0 开始计数)。

$TMUX_PANE

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