我启动多窗格 tmux 窗口来监视多个服务器参数。使用 Ctrl-S,我可以使用另一个监视器命令打开一个新窗口。
现在我想绑定 Ctrl-Q 以打开另一个带有多个显示器的多窗格窗口。如何将一个键绑定到多个命令?我尝试将它们链接起来;和 \; - 没有任何帮助。请告诉我应该使用什么而不是......下面。
当我打开一个新窗口时,是否可以暂停与其重叠的后台命令?
tmux new-session "monitor1" \;\
split-window -v "monitor2" \;\
select-pane -U \;\
split-window -v -h -p 60 "monitor3" \;\
bind-key -n C-s new-window "monitor4" \;\
bind-key -n C-q "..."
Run Code Online (Sandbox Code Playgroud)
Pee*_*eja 50
Todd Freed 是对的,“正确”的方法是使用\;
. 有点。但有一个障碍。
你看,你通过给 tmux 连词将一系列 tmux 命令连接在一起;
。因此,在 tmux 来源的文件中,您可能会说
new-session "monitor1" ; split-window -v "monitor2"
Run Code Online (Sandbox Code Playgroud)
如果出于某种原因,您希望在一行中完成所有操作。现在,你可以给一个行复合语句的tmux
命令从外壳也不过了;
必须这样逃脱了外壳将其解释为另有说法为tmux
。因此,shell 中的等价物是
$ tmux new-session "monitor1" \; split-window -v "monitor2"
Run Code Online (Sandbox Code Playgroud)
类似地,tmuxbind-key
命令接受一系列参数,它们是 tmux 命令和在按下键时运行的参数。如果您想C-q
从 tmux 来源的文件内部绑定到上述序列,您会说
bind-key -n C-q new-session "monitor1" \; split-window -v "monitor2"
Run Code Online (Sandbox Code Playgroud)
在这里,我们对;
from tmux 进行了转义,因此 tmux 不会将其解释为bind-key
命令的结尾,而是作为另一个参数bind-key
告诉它形成复合命令作为C-q
键的绑定值。
那么当我们想让 tmux 从 shell 做这件事时会发生什么呢?一大堆逃跑。
$ tmux bind-key -n C-q new-session "monitor1" \\\; split-window -v "monitor2"
Run Code Online (Sandbox Code Playgroud)
首先,我们要逃走了\
,并在;
从每个外壳,使shell两个字符传递\;
作为参数tmux
。然后这会转义;
from tmux,使其将整个复合语句分配为C-q
.
现在,综上所述,如果您反复使用这样的复杂 tmux 设置,我建议您创建一个 tmux 文件以将其保存在:
# In split-windows.tmux:
new-session "monitor1"
split-window -v "monitor2"
bind-key -n C-s new-window "monitor4"
# ...etc...
Run Code Online (Sandbox Code Playgroud)
进而:
$ tmux source split-windows.tmux # (or even make an alias for this)
Run Code Online (Sandbox Code Playgroud)
以这种方式维护会容易得多。
Tod*_*eed 17
所以真正的答案是:用反斜杠后跟分号链接命令。
bind-key C send-keys foo \; send-keys bar
Run Code Online (Sandbox Code Playgroud)
你可以把它放在你的 tmux.conf 中,或者从 tmux ":" 提示符运行
您可以将类似的内容添加到文件的键绑定中.tmux.conf
:
bind q send-keys "/home/jackhab/bin/tmux-new-session.sh" \; send-keys "Enter"
Run Code Online (Sandbox Code Playgroud)
并且tmux-new-session.sh
您可以拥有:
#! /usr/bin/env bash
tmux new-session "monitor1"
tmux split-window -v "monitor2"
tmux select-pane -U
tmux split-window -v -h -p 60 "monitor3"
...
exit
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
17197 次 |
最近记录: |