答案1
在这里找到了解决方案:https://blog.callstack.io/supercharge-your-terminal-with-zsh-8b369d689770
# Open new tabs in same directory
if [[ "$TERM_PROGRAM" == "Apple_Terminal" ]]; then
function chpwd {
printf '\e]7;%s\a' "file://$HOSTNAME${PWD// /%20}"
}
chpwd
fi
请注意,它在路径上执行的唯一百分比编码是将空格替换为“%20”。这应该被替换为更强大的编码。
答案2
点击蓝色文字:
因此,您只需将这个小转义序列添加到提示符中,以便终端知道您所在的位置。简单的!
或者,如果您认为这有点神秘,让我们看看 bash 是如何实现这一目标的。检查man bash
显示,当 bash 作为交互式登录 shell 调用时(这应该是打开终端窗口或选项卡时的默认设置),它引用的文件之一是/etc/profile
.
快速浏览一下/etc/profile
就会发现它可能会加载/etc/bashrc
。
往里面看/etc/bashrc
显示它正在尝试加载/etc/bashrc_$TERM_PROGRAM
.快速检查:
> echo $TERM_PROGRAM
Apple_Terminal
稍后less /etc/bashrc_Apple_Terminal
,还有大奖!就在顶部附近:
# Tell the terminal about the current working directory at each prompt.
接下来是一个执行此操作的函数,可以包含在(bash)提示符中。我将避免在这里复制该函数,因为我不完全确定这样做的合法性,尽管我将包含该函数的最后一行,因为我相信这足够简单,可以合理使用:
printf '\e]7;%s\a' "file://$HOSTNAME$url_path"
这基本上就是首选项窗口弹出窗口中神秘的转义序列。该函数的其余部分完全是关于$url_path
使用必要的percent_encoding设置变量。您需要将这些内容转换为 zsh,或者只是将其提取到外部 bash 脚本并调用它,尽管每次启动 bash 实例可能会稍微减慢您的提示速度。
答案3
只需执行以下键盘快捷键即可:
cmd + ctrl + o