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

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

我已经使用以下方式定制了我的 ZSH 提示符哦我的天啊使其更具可读性,并且如果我在存储库中则添加有关 git 的信息。

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

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

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

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

答案1

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

当 TERM 环境变量的值以 开头时screen(在两种情况下都应该如此屏幕tmux),它使用屏幕终端控制序列来设置窗口的名称

  • (在显示 shell 提示符之前)
    当前工作目录的“波浪号压缩”路径的最左侧部分(..后跟最后 13 个字符,如果少于 15 个字符,则为整个路径)和
  • (在启动一个命令之前)
    即将运行的命令的第一个“单词”(不包括sshsudo和其他一些)。

听起来它对你来说就是这样工作的(你说当你在那个目录中时,你的窗口名称更改为)。如果你想禁用这种自动重命名,你可以在你的 中将~/docsDISABLE_AUTO_TITLE shell 参数设置为 来完全禁用它:true.zshrc

DISABLE_AUTO_TITLE=true

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

答案2

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

set-option -g allow-rename off

答案3

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

set-window-option -g automatic-rename off

感谢 Chris 的回答。在我更改以下内容后,我的 tmux 窗口名称没有自动重命名:

set -g default-terminal "screen-256color"

到:

set -g default-terminal "xterm-256color"

答案4

如果您只想禁用某个窗口的自动重命名,那么您可以使用:

 set -t [WINDOW_NUMBER] automatic-rename off

在另一个会话中的特定窗口中禁用自动重命名:

 set -t [SESSION]:[WINDOW_NUMBER] automatic-rename off

相关内容