如何在新選項卡中打開目前目錄?
我的環境
- macOS 上的 Terminal.app 2.9.4
- zsh 5.7.1
當我使用 bash 時,終端可以在新選項卡中打開目前目錄,但是自從我更改為 zsh 後,它就無法做到這一點。
在應用程序設置中,即使它設置為“相同的工作目錄”。
如果我在
.zshrc
or上寫一些東西.zprofile
,它可以做到嗎?
在這裡找到了解決方案: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”。這應該用更健壯的編碼代替。
點擊藍色文字:
所以你只需要在你的提示中添加那個小轉義序列,這樣終端就知道你在哪裡。簡單的!
或者,如果您認為這有點神秘,那麼讓我們來看看 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"
這基本上是首選項視窗彈出的神秘轉義序列。該函式的其餘部分完全是關於使用必要的 percent_encoding 設置
$url_path
變數。您需要將這些內容轉換為 zsh 或將其提取到外部 bash 腳本並呼叫它,但每次啟動 bash 實例可能會減慢您的提示速度。