現在のディレクトリの最初の2文字だけを表示したいと思います。
頑張った
PROMPT="%1d %# "
現在のディレクトリをdirectory1
。zsh
プロンプトでdi
はなく最初の2文字だけを取得するにはどうすればよいですか?directory1
zsh
答え1
%2>...>
切り捨て演算子を使用して切り取り%1~
(現在の作業ディレクトリの最後の表現)を使用できます。~
または%1d
チルダ表現が必要ない場合:
$ PROMPT='before %2>>%1~%>> after%# '
before ~ after% cd /usr/local
before lo after% cd ~sys
before ~s after%
または、いくつかの切り捨てがあることを示します。
$ PROMPT='before %3>✀>%1d%>> after%# '
before ch✀ after% cd /usr/local
before lo✀ after% cd /
before / after%
答え2
この試み:
setopt promptsubst
PROMPT='${${(%):-%1d}[1,2]}%#'
zsh
これは最初は少し読みにくいかもしれないネストされた拡張セットです。いくつかの作品:
setopt promptsubst
- この機能を有効にすると、プロンプトのsがzsh
展開されます。${..}
PROMPT='...'
- プロンプトを設定します。一重引用符は重要です。${...}
後で拡張を評価したくありません。%#
-#
ルートの場合、%
そうでない場合。${:-...}
%1d
- 入れ子になった拡張子に定数文字列()を入れる方法です。${(%)...}
- パーセントシーケンスはプロンプトシーケンスとして扱われます。${...}
拡張が私たちを「即時世界」から「正常可変世界」に連れて行くので、これが必要です。%1d
- 現在のディレクトリの最後のコンポーネントです。の/a/b/c/ddd
場合はこれですddd
。${...[1,2]}
- 文字列の最初の2文字。配列はzsh
indexで始まります1
。