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


43

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

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

它工作得很好,但我有一些错误tmux和窗口名称。它仍然显示非感知值,我无法禁用它automatic-rename off(它只是不起作用,每个命令后窗口名称更改),第一个示例tmux ~/docs用于窗口名称。

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

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

Answers:


75

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

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

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

听起来它正在以这种方式为您工作(您说您的窗口名称~/docs在您进入该目录时已更改为)。如果要禁用此自动重命名,你可以可以完全由DISABLE_AUTO_TITLE外壳参数设置来禁用它true在你的.zshrc

DISABLE_AUTO_TITLE=true

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


4
这是一个完美的答案。准确,信息丰富,简明扼要。此外,除了回答原始问题(“理解问题在哪里”)之外,它还提供了一个解决方案。只有花时间提问的人才不会打扰这个问题作为答案。
dmondark 2013年


.zshrc所有用户的文件在哪里?
andilabs 2015年

28

我知道上面的答案给你一个解决方案,但另一个是简单地添加你的〜/ .tmux.conf这个选项

set-option -g allow-rename off

这是一个更好的解决方案,因为它只影响tmux。
保罗奥利弗2014年

即使使用此设置,连接窗格后跟break-pane
也会

6

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

set-window-option -g automatic-rename off

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

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

至:

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

0

如果要仅为某个窗口禁用自动重命名,则可以使用:

 set -t [WINDOW_NUMBER] automatic-rename off

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

 set -t [SESSION]:[WINDOW_NUMBER] automatic-rename off
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.