因此,我想进行一个特定于项目的tmux
会话,该会话会自动弹出某些窗格中的某些命令。遵循在线教程和tmux
手册页之后,这就是我为配置文件准备的内容:
new -n estruct ls
neww -n estruct2 ls
splitw -v -p 50 -t 0 ls
结果是……什么都没有。tmux
从一个窗口和该窗口中的单个窗格启动,而不执行任何命令。
我将如何制作一个配置文件,该配置文件实际上允许我使用预先执行的某些命令来创建一组窗口和窗格?
您的配置文件正在运行,但是有一些麻烦。
首先,您正在启动的命令(例如ls)非常快地完成运行。命令的窗口和窗格已创建,但是一旦退出每个命令,它们就会消失。
如果您的目标是在最终配置中实际使用这样的“一次性”命令,则您可能应该使用window选项remain-on-exit
(并可能使用session选项set-remain-on-exit
为会话中创建的所有窗口提供默认设置)。当remain-on-exit
设置为一个窗口,它不会消失的命令退出时。您可能希望将映射respawn-window
到一个键(注意:respawn-window
将重新生成原始命令;respawn-pane
在tmux 1.5中也可用以重新生成各个窗格)。
bind-key R respawn-window
# set global r-o-e so that initial window of initial session gets it
set -g set-remain-on-exit on
# create a session and its windows/panes
new -n estruct ls
neww -n estruct2 ls
splitw -v -p 50 -t 0 ls
# restore global r-o-e
set -g set-remain-on-exit off
# let session r-o-e inherit from global value for future windows
set -u set-remain-on-exit
或者,如果您不介意初始窗口是数字1而不是数字0,那么我们可以避免更改全局值:
bind-key R respawn-window
# create a session with a throw-away window
new true
# for future windows, stay open after the command exits
set set-remain-on-exit on
# create the windows we really want
neww -n estruct ls
neww -n estruct2 ls
splitw -v -p 50 -t 0 ls
# for future windows, revert r-o-e to global value
set -u set-remain-on-exit
如果您仅用ls
作简化的占位符命令,并且实际上打算在Windows /窗格中生成某种类型的交互式命令,那么您可能应该仅生成要最终运行的命令。如果您打算命令的时间太长启动过程中使用它TMUX测试,然后替换一个壳或其它简单的交互式命令(例如top
,sqlite3
等)。
new-session
是默认命令其次,在没有命令参数(例如)的情况下运行tmuxtmux
等同于使用new-session
命令(即tmux
与相同tmux new-session
)。您.tmux.conf
将为其窗口/窗格创建一个会话(new
是的别名new-session
),并且正在为new-session
通过启动tmux而没有命令参数指定的隐式命令创建另一个会话。如果使用默认状态栏,[1]
则在“额外”会话中(在中创建的初始会话.tmux.conf
为数字0),您将在状态栏的左侧看到a 。
如果要避免创建额外的会话,请使用tmux attach
而不是plain tmux
。来自您的命令.tmux.conf
将运行,创建会话0,然后您的客户端将附加到该会话,而不是创建一个新的会话。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句