我已经使用以下方式定制了我的 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 个字符,则为整个路径)和 - (在启动一个命令之前)
即将运行的命令的第一个“单词”(不包括ssh
、sudo
和其他一些)。
听起来它对你来说就是这样工作的(你说当你在那个目录中时,你的窗口名称更改为)。如果你想禁用这种自动重命名,你可以在你的 中将~/docs
DISABLE_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