MinTTY 是 Cygwin 的新默认控制台。
什么是 shell 命令(我可以将其放入 .bashrc 中,或者更好的是,放入 .zshrc 中)来更改 MinTTY 窗口的标题?
我希望窗口的标题是当前目录的路径,并且当我在控制台内切换目录时它也会更新。
答案1
怎么了
以下命令对我来说不起作用:
echo -ne "\e]0;MYTITLE\a"
事实证明,我的默认 Cygwin 安装在 .bashrc 中包含以下提示定义:
PS1=\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n$
请注意,提示的第一部分(\e]0;\w\a
)是每次出现提示时设置窗口标题。
解决方案
.bashrc
在定义 2 个函数中添加以下几行:
function settitle() {
export PS1="\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n$ "
echo -ne "\e]0;$1\a"
}
function settitlepath() {
export PS1="\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n$ "
}
然后您可以使用以下命令设置自定义标题:
settitle "MYWonderfullTest here"
或者你可以用这个命令恢复到 cygwin 的默认设置(当前路径):
settitlepath
希望这可以帮助
答案2
您可以使用 xterm 控制序列来更改它,如下所示:
echo -ne '\e]0;Title\a'
答案3
将其放在.zshrc 中:
# Change title of MinTTY to current dir
function settitle() {
echo -ne "\033]2;"$1"\007"
}
function chpwd() {
settitle $(cygpath -m `pwd`)
}
函数 settitle 中的特殊字符序列使 MinTTY 改变了窗口的标题。
在嘚,如果你用特殊名称 chpwd 定义一个函数,它将是在每个 chdir 之后调用。
适用于 WinXP,使用 Cygwin 1.7 和 MinTTY 运行 zsh。
答案4
我使用了 Leonel 的答案,但我发现这样做时标题只会闪烁,这意味着至少 echo 命令可以按预期工作。我使用以下方法以交互方式运行 zsh,并启用调试模式
zsh -xv
更改目录显然会调用另一个title()
在precmd()
和之后调用的函数chpwd()
,从而有效地覆盖它们。所以我将它插入到我的 .zshrc 中,它成功了。
function settitle() {
echo -ne "\033]2;"$1"\007"
}
function title() {
settitle $(cygpath -m `pwd`)
}
如果您更喜欢使用chpwd()
或precmd()
,只需禁用标题功能:title(){}
。