很长一段时间以来,我一直在使用提供的答案恢复 Zsh 终端 (OS X Lion)在 下运行时为 Terminal.app 设置代理图标zsh
,到目前为止,它运行良好。但是,我最近注意到在zsh
下运行时screen
,zsh
无法再更新 Terminal.app 的当前工作目录。
经过一番寻找,似乎screen
接受不同的转义序列(或类似的序列)来设置其标题,并且screen
和之间似乎存在一些沟通不畅xterm
,但总的来说,我还没有找到解决此问题的方法。
我已将以下行添加到我的.screenrc
文件中,但无济于事:
termcapinfo xterm* 'hs:ts=\E]2;:fs=\007:ds=\E]2;screen\007'
我见过很多不同的“解决方案”,但没有一个专门支持这一点——有什么帮助吗?
为了澄清起见,按照克里斯下面的评论:以前,我使用以下行来更新终端:
printf '\e]7;%s\a' "${PWD// /%20}"
这在屏幕下不起作用,要么是因为printf
功能方式,要么是因为使用的转义序列。
答案1
最终解决了我自己的问题。我使用以下代码添加了一个zsh
钩子:chpwd
# Update Terminal about the current working directory.
if [[ "$TERM_PROGRAM" = "Apple_Terminal" ]]; then
update_terminal_pwd() {
echo -n "<ESC>]0;${$(pwd -P)//\/Users\/itaiferber/~}/"
}
autoload add-zsh-hook
add-zsh-hook chpwd update_terminal_pwd
update_terminal_pwd
fi
这会将终端窗口的标题更新为当前工作目录(在跟随符号链接时显示缩写路径而不是完整文件路径),以及文档代理图标。
需要澄清的是,这需要与问题中提到的线路一起使用.screenrc
- 它不能立即起作用。
再次,根据 Chris 的评论,我想明确一点:这个答案似乎提供了正确的转义序列来触发终端标题更新。我认为通过此配置,screen
现在可以正确更新终端的标题。