我的文件中有一个命令.tmux.conf
,它检查目录是否存在,如果不存在则显示一条消息;另一个命令尝试运行 shell 脚本。
文件:~/.tmux.conf
# do a check and display message if non-zero exit
if-shell "! [-d $HOME/.tmux]" 'display-message "tmux plugins are not installed"'
# try run a shell script
run-shell ~/.tmux/plugins/tmux-resurrect/resurrect.tmux
问题是 tmux 不会显示启动期间生成的任何消息 - 这是我期望生成诊断错误和警告的时间。
我启动 tmux 时,在 tmux 的寻呼机中收到错误消息
(null):0: no current session
它显然不喜欢被发送消息。
source-file ~/.tmux-conf
如果我在 tmux 会话中运行相同的命令,所有消息都会成功报告。如何让 tmux 在启动期间报告消息?
答案1
我知道这已经很旧了,但我也对显示某种启动消息感兴趣并遇到了这个问题。经过一番搜索,我最终发现了 tmux hooks(tmux 2.2内部引入)可以配置为显示一次性启动消息(了解更多这里)。
您可以使用该session-created
挂钩在新会话上运行 tmux 命令。display-message -p "message"
直接向新创建的窗口输出一条消息。所以你可以显示这样的消息:
MESSAGE='display-message -p "tmux plugins are not installed" ; \
display-message -p "please press Leader + I to install" ; \
set-hook -gu session-created ;'
if-shell "[ ! -d $HOME/.tmux ]" 'set-hook -g session-created ${MESSAGE}'
取消set-hook -gu session-created
注册此钩子,以便此消息仅显示在第一的已创建会话,而不是所有后续会话。
答案2
它从命令行对我有用,如下所示:
tmux new-session \; if-shell "! [-d $HOME/.tmux]" 'display-message "tmux plugins are not installed"'