如何在 zsh 中拥有更长的 xterm 标题

如何在 zsh 中拥有更长的 xterm 标题

我正在使用 zsh 5.3 。我看见https://wiki.archlinux.org/index.php/Zsh#xterm_title并决定使用它 -

~/.zshrc

autoload -Uz add-zsh-hook

function xterm_title_precmd () {
    print -Pn '\e]2;%n@%m %1~\a'
}

function xterm_title_preexec () {
    print -Pn '\e]2;%n@%m %1~ %# '
    print -n "${(q)1}\a"
}

if [[ "$TERM" == (screen*|xterm*|rxvt*) ]]; then
    add-zsh-hook -Uz precmd xterm_title_precmd
    add-zsh-hook -Uz preexec xterm_title_preexec
fi

虽然它工作得很好,而且工作得很好,但它并没有完全做到这一点。例如它显示——

shirish@think-debian prompts

代替

shirish@thnk-debian /usr/share/zsh/functions/Prompts

这将是完整的路径。虽然我确实明白这是有益的,尤其是。如果您使用的是笔记本电脑或一些较小屏幕尺寸的设备,则在台式机上这应该显示完整路径。

有人知道我该怎么做吗?

我确实知道需要更改的内容在打印中,但是什么?

function xterm_title_precmd () {
        print -Pn '\e]2;%n@%m %1~\a'
    }

    function xterm_title_preexec () {
        print -Pn '\e]2;%n@%m %1~ %# '
        print -n "${(q)1}\a"
    } 

答案1

来自文档 %~扩展为目录名称,但使用~代替$HOME.%1~表示仅使用名称的最后 1 个部分。

所以只需1删除'\e]2;%n@%m %1~\a'

相关内容