终端/超级术语在选项卡标题中显示什么?这个可以定制吗?

J. *_*son 1 unix terminal zsh oh-my-zsh hyperterm

我很困惑终端选项卡中显示的数据是什么。第一部分epzio显然是我的用户名。但第二部分,@C02S60BBG8WP我不知道。

注意:我将 zsh 与 oh-my-zsh 结合用于我的 shell。

是否可以自定义选项卡标题中显示的内容?我想epzio@C02S60BBG8WP完全删除该部分并仅显示当前工作目录。

另外,为什么我的标签标题无缘无故地变成蓝色?我认为只有当您有特定的进程(例如节点正在运行)时,才会发生这种情况。正如您在下面的屏幕截图中看到的,tic-tac-toe即使该选项卡中没有发生任何事情,该选项卡也已变成蓝色。

更新:似乎解决方案可能涉及对 进行更改~/.oh-my-zsh/lib/termsupport.zsh,但我不确定当 oh-my-zsh 更新自身时这些是否会被覆盖。

在此输入图像描述

Tho*_*mas 7

C02S60BBG8WP可能是您的主机名;通过输入进行检查hostname

您可以通过打印转义序列来更改终端标题,如下所示:

echo -en "\033]0;New terminal title\a"
Run Code Online (Sandbox Code Playgroud)

因此,这应该将标题更改为您当前的工作目录 ,如果您位于 ,$PWD则用单个替换:~$HOME

echo -en "\033]0;${PWD/#$HOME/~}\007"
Run Code Online (Sandbox Code Playgroud)

如果这不起作用,则可能会立即被 shell 自动调用的命令覆盖。在 bash 中,PROMPT_COMMAND在我的系统上看起来像这样:

$ echo $PROMPT_COMMAND 
__vte_prompt_command; printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/\~}"
Run Code Online (Sandbox Code Playgroud)

zsh 等效项似乎是定义一个precmd钩子:

precmd() { echo -en "\033]0;${PWD/#$HOME/~}\007" }
Run Code Online (Sandbox Code Playgroud)

为了使其永久化,您可以将其放入您的.zshrc.

  • 谢谢托马斯。`precmd() { echo -n -e "\033]0;$(basename "$PWD")\007" }` 是我最终决定的,我把它放在 `.zshrc` 的底部。由于我使用的是 oh-my-zsh,我唯一需要做的额外事情是取消注释 `DISABLE_AUTO_TITLE="true"` (2认同)