如何修复 tmux 在启动时不显示消息的问题?

如何修复 tmux 在启动时不显示消息的问题?

我的文件中有一个命令.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"'

相关内容