zshプロンプトでパスを短くする

zshプロンプトでパスを短くする

BashPROMPT_DIRTRIM私が設定したときと同じオプションがあり、PROMPT_DIRTRIM=3次のような長いパスがあります。

user@computer: /this/is/some/silly/path

次のように表示されます。

user@computer: .../some/silly/path

同様のオプションがありますかzsh

答え1

bashinclude と同様の効果を得るには、...以下を試してください。

%(4~|.../%3~|%~)

変数の位置(設定で名前を付けることPROMPTもできます)これは、パスの長さが少なくとも4つの要素であることを確認し()、trueの場合は最後の3つの要素の一部を印刷し()、それ以外の場合はパス全体()を印刷します。します。PS1%~%(4~|true|false).../%3~%~


私はこれがbashホームディレクトリへのパスをいくつかの方法で短縮することがわかりました。たとえば、次のようになります。

~/.../some/long/path

同様の効果を得るには、次のものを使用できます。

%(5~|%-1~/…/%3~|%4~)

これは、パスの長さが少なくとも5つの要素であることを確認し、その場合、最初の要素(%-1~)、いくつかの点(/…/)、および最後の3つの要素を印刷します。これはホームディレクトリにないパスとまったく同じではなく、最初に最初の要素があり、bashその場合はドットのみが印刷されます。だから

/this/…/some/silly/path

変える

.../some/silly/path

しかし、それは必ずしも悪いわけではありません。


代わり%~に使用することもできます%d(またはPROMPT現在すでに使用している可能性があります%d)。違いは、絶対%dパス全体を表示し、%~「名前付きディレクトリ」の略語を表示することです。例: /home/youruserbe~および/home/otheruserbe ~otheruser。短縮の基準としてフルパスを使用するには、すべての項目~d

答え2

ここで提供されている他の回答に加えて、%<与えられた数の使用経路を切り捨てることもできます数値%<n>d個々のパス要素自体が明らかに長い可能性があるため、使用するよりもこれが優れています。を使用すると、%<最大プロンプト長をさらに予測できます。

たとえば、チルダ拡張(%~)を使用してパス要素を左から15文字に切り取り、削除された文字を次に置き換えます..

PROMPT='%n@%m:%15<..<%~%<<%# '

これはZshマニュアルに文書化されています。急速な拡張、ページの最後にあります。

答え3

バラよりhttp://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.htmlまたはman zshmisc

%d
%/
Current working directory. If an integer follows the ‘%’, it specifies a number of trailing components of the current working directory to show

%~
As %d and %/, but if the current working directory starts with $HOME, that part is replaced by a ‘~’.

したがって、このようなものを取得するにはorをPROMPT_DIRTRIM=3使用できます。%3d%3~

% mkdir -p ~/a/b/c/d
% cd ~/a/b/c/d
% PS1='%n@%m: %3d%% '
user@computer: b/c/d% 

答え4

あなたはそれを使用することができます%3d 急速な拡張:

/home/cuonglm/.config/fish/functions $ PS1='%3d $ '
.config/fish/functions $

一般的な形式は、表示する現在のパスの末尾のコンポーネントを指定する正の整数が%d続く場合、0はフルパスが表示されることを意味し、負の整数は表示される先行パスを表します。d

.config/fish/functions $ PS1='%-2d $ '
/home/cuonglm $

関連情報