ZSHシェルコマンドラインからパスバーを一時的に非表示にしますか?

ZSHシェルコマンドラインからパスバーを一時的に非表示にしますか?

一部の設定ファイルで永久に無効にすることに加えて、コマンドプロンプトの前にディレクトリパスの可視性を一時的に隠すように切り替えるショートカットや何かがありますか?

つまり、ZSHはフルパスが長いときにディレクトリ名を短縮しているようですが、現在のディレクトリの親ディレクトリに対してのみこれを行うように見えます。長い。

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

答え1

以下でこれを行うことができます~/.zshrc

realPS1="$PS1"
changed=false

changePS1() {

   $changed && {

      PS1="%n (normal) in %~> "
      #Or
      PS1="$realPS1"

      changed=false
      : # <-- It might be not necessary add this `:`. This one 
        #represents a zero-status code (or successful).  

   } || {
      PS1="%n (hidden)> "
      changed=true
   }
}

bindkey -s "^H" 'changePS1^M'

Ctrl + H 上記のコードは、関数を実行するためのショートカット(バインドキーを使用)を生成しますchangePS1。したがって、デフォルトでプロンプトを Ctrl + H 有効にしてもう一度押すと、プロンプトが有効になります。hidden Ctrl + H normal

$PS1割り当てる必要がある値についてあなたのニーズに応じて。たとえば、この行には次のPS1="%n (normal) in %~> "プロンプトが表示されます。

edgar (normal) in ~/Documents/Gitlab/Linux_programming>

%nユーザー名と%~現在の作業ディレクトリの相対パスはどこにありますか?

ただし、実際の$PS1(行realPS1="$PS1")をバックアップしてPS1="$realPS1"代わりに使用できます。PS1="%n (normal) in %~> "

そして、PS1="%n (hidden)> "次のプロンプトが表示されます。

edgar (hidden)>

したがって、PS1カスタムヒントを使用して変数を割り当てる必要がありますが、%~パスの印刷を避ける必要はありません。

関連情報