Todd Freed是正确的,执行此操作的“正确”方法是使用\;
。有点。但是有一个障碍。
您会看到,通过给tmux连词,将一系列tmux命令连接在一起;
。因此,在tmux来源的文件中,您可能会说
new-session "monitor1" ; split-window -v "monitor2"
如果出于某种原因,您希望所有这些都在一条线上。现在,你可以给一个行复合语句的tmux
命令从外壳也不过了;
必须进行转义,这样shell将其解释为另有说法为tmux
。因此,上面的内容等效于shell
$ tmux new-session "monitor1" \; split-window -v "monitor2"
同样,tmux bind-key
命令采用一系列参数,它们是tmux命令和按下键时要运行的参数。如果您想C-q
从tmux来源的文件内部绑定到上述序列,您会说
bind-key -n C-q new-session "monitor1" \; split-window -v "monitor2"
在这里,我们;
从tmux逃脱了,因此tmux不会将其解释为bind-key
命令的结尾,而是将bind-key
其解释为形成复合命令作为C-q
键的绑定值的另一个参数。
那么,当我们想让tmux从shell中执行此操作时会发生什么?大量逃逸。
$ tmux bind-key -n C-q new-session "monitor1" \\\; split-window -v "monitor2"
首先,我们必须逃脱\
,并在;
每一个从外壳,使得外壳的两个字符传递\;
作为参数tmux
。然后;
,它从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...
接着:
$ tmux source split-windows.tmux # (or even make an alias for this)
这样维护起来会容易得多。
\;
:$ tmux bind-key -n C-q new-session "monitor1" '\;' split-window -v "monitor2"