新しいタブで現在のディレクトリを開く方法は?

新しいタブで現在のディレクトリを開く方法は?

私の環境

  • macOSのTerminal.app 2.9.4
  • zsh 5.7.1

bashを使用すると、端末は現在のディレクトリを新しいタブで開くことができましたが、zshに変更したため、そうすることはできません。

アプリケーション設定で「同じ作業ディレクトリ」に設定されていても同様です。

ここに画像の説明を入力してください。

.zshrc私が何かを書いた場合、.zprofileそれを行うか?

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

関連情報