我可以在 Tmux 的状态栏中使用 ZSH 自定义函数的输出吗?

我可以在 Tmux 的状态栏中使用 ZSH 自定义函数的输出吗?

我在 ~/.zshrc 中定义了一个函数:

foo() { print "FOO" }

我想将其输出到我的 Tmux 状态栏中。我将其添加到 ~/.tmux.conf:

set -g status-right "foo: #(foo)"

但我只看到了其中的静态部分;函数输出缺失。(虽然我的实际函数更复杂,但即使对于上面的简单示例也是如此。)

当我调用脚本而不是函数时,它工作正常。有什么区别?可以在那里使用函数吗?

答案1

手册tmux页说明了该set选项:

#(shell-command)命令输出的第一行

但我很确定,这并不意味着 shell功能,因为tmux不会shell-command在当前 shell 会话中执行,而是启动一个新实例,该实例启动为非交互式,因此不会获取您的~/.zshrc配置,也不知道其中定义的函数。

为了解决这个问题,你可以创建一个 shell脚本,命名foo

#!/bin/zsh -f

source ~/.zshrc   # or just the desired function to save parsing time
# use some functions defined in ~/.zshrc

print "FOO"

相关内容