Tmux 和 ZSH 自定义提示:窗口名称错误

Adr*_*uio 44 zsh git prompt tmux oh-my-zsh

我已经使用oh-my-zsh自定义了我的 ZSH 提示,以使其更具可读性,并在我在存储库中时添加有关 git 的信息。

示例:(
bob@inf [~/docs] %
bob@inf [~/src/nicest] master %在 git 存储库中)

它运行良好,但我有一些错误tmux和窗口名称。它仍然显示无意义值,我无法禁用它automatic-rename off(它不起作用,每个命令后窗口名称都会更改),对于第一个示例 tmux~/docs用于窗口名称。

我不确定如何修复它,我想保持我的 zsh 提示不变,如果可以进行更改但想了解问题出在哪里?

另一种解决方案可能是重新定义命令settile(来自这个答案),但我不确定如何以正确的方式做到这一点。

Chr*_*sen 79

我看了一眼 oh-my-zsh 并发现了一个可能的嫌疑人

当 TERM 环境变量的值以screen(它应该在screentmux 下)开头时,它使用屏幕终端控制序列将窗口的名称设置为

  • (就在显示 shell 提示之前)
    当前工作目录的“波浪号压缩”路径的最左侧部分(..后跟最后 13 个字符或整个路径,如果少于 15 个字符)和
  • (刚开始的命令之前)
    有关将要运行命令的第一个“字”(不计数sshsudo和其他一些)。

听起来它对您来说是这样工作的(您说您的窗口名称更改为~/docs您在该目录中时的名称)。如果要禁用此自动重命名,可以通过true在您的 DISABLE_AUTO_TITLE shell 参数中设置 DISABLE_AUTO_TITLE 来完全禁用它.zshrc

DISABLE_AUTO_TITLE=true
Run Code Online (Sandbox Code Playgroud)

如果你只是在交互式 shell 中设置它,你最终会得到一个空字符串作为当前窗口的名称,但是 oh-my-zsh 将在该 shell 实例中的每个提示和命令之前停止更新窗口(它需要在您.zshrc将影响所有新的 shell 实例)。

  • 这是一个如此完美的答案。准确、翔实、简明扼要。此外,除了回答原始问题(“了解问题出在哪里”)之外,它还提供了一个解决方案。令人遗憾的是,花时间提问的人没有费心将其标记为答案。 (4认同)

小智 31

我知道上面的答案为您提供了一个解决方案,但另一个是简单地将此选项添加到您的 ~/.tmux.conf

set-option -g allow-rename off
Run Code Online (Sandbox Code Playgroud)


小智 6

我遇到了同样的问题,即使在 .tmux.conf 中设置,tmux 的窗口名称也已更改:

set-window-option -g automatic-rename off
Run Code Online (Sandbox Code Playgroud)

谢谢克里斯的回答。更改后,我的 tmux 窗口名称未自动重命名:

set -g default-terminal "screen-256color"
Run Code Online (Sandbox Code Playgroud)

到:

set -g default-terminal "xterm-256color"
Run Code Online (Sandbox Code Playgroud)