答え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が対話型ログインシェル(ターミナルウィンドウまたはタブを開くときにデフォルト値である必要があります)として呼び出されたときに参照するファイルの1つは/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