私がbashを使用したとき、ターミナルは現在のディレクトリを新しいタブで開くことができましたが、zshに変更して以来、それを行うことができませんでした。
アプリ設定では、「同じ作業ディレクトリ」に設定されていますが。
.zshrc
または.zprofile
、それができるでしょうか?
ここで解決策を見つけました: https://blog.callstack.io/supercharge-your-terminal-with-zsh-8b369d68977
# 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がインタラクティブログインシェルとして呼び出された場合(これはターミナルウィンドウまたはタブを開くときのデフォルトであるはずです)、参照するファイルの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"
これは基本的に、設定ウィンドウのポップアップからの不可解なエスケープシーケンスです。関数の残りの部分は、必要なpercent_encodingを使用して$url_path
変数を設定することに関するものです。そのようなものをzshに変換するか、外部のbashスクリプトに抽出して呼び出す必要がありますが、毎回bashインスタンスを起動するとプロンプトが少し遅くなる可能性があります。
次のキーボードショートカットを実行するだけです。
cmd + ctrl + o