Ответы:
Чтобы получить аналогичный эффект bash
, в том числе ...
, попробуйте:
%(4~|.../%3~|%~)
Это проверяет, является ли путь не менее 4 элементов long ( %(4~|true|false)
) и, если true, печатает несколько точек с последними 3 элементами ( .../%3~
), в противном случае печатается полный путь %~
.
Я заметил, что, bash
кажется, сокращает пути в домашнем каталоге по-разному, например:
~/.../some/long/path
Для аналогичного эффекта вы можете использовать:
%(5~|%-1~/…/%3~|%4~)
Это проверяет, больше ли путь, чем 5 элементов, и в этом случае печатает первый элемент ( %-1~
), некоторые точки ( /…/
) и последние 3 элемента. Это не совсем то же самое, что пути, которые не находятся в вашем домашнем каталоге, также будут иметь первый элемент в начале, тогда bash
как в этом случае просто печатает точки. Так
/this/…/some/silly/path
вместо того
.../some/silly/path
Но это не обязательно плохо.
PROMPT
вашей переменной среды .zprofile
, например:EXPORT PROMPT="%(5~|%-1~/…/%3~|%4~)"
.zshrc
и нет никакой необходимости в export
каких-либо внутренних параметрах оболочки, таких как PROMPT
.
В дополнение к другим ответам, приведенным здесь, вы также можете использовать %<
для усечения пути до заданного количества символов . Я считаю, что это предпочтительнее использования %<n>d
, поскольку отдельные элементы пути, очевидно, сами по себе могут быть довольно длинными. Использование %<
дает гораздо более предсказуемую максимальную длину приглашения.
Например, чтобы укоротить элемент path с расширением tilde ( %~
) до 15 символов и заменить удаленные символы на ..
, вы можете сделать что-то вроде этого:
PROMPT='%n@%m:%15<..<%~%<<%# '
Это задокументировано в руководстве по Zsh в разделе « Быстрое расширение» в конце страницы.
Вы можете использовать %3d
быстрое расширение :
/home/cuonglm/.config/fish/functions $ PS1='%3d $ '
.config/fish/functions $
Общая форма такова %d
: если любое последующее положительное целое число d
указывает конечные компоненты для показа текущего пути, нулевое среднее значение показывает весь путь, отрицательное целое число означает начальный путь для отображения:
.config/fish/functions $ PS1='%-2d $ '
/home/cuonglm $
См. 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 ‘~’.
Таким образом, чтобы получить что-то похожее 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%
~/a/b
как.../a/b
вместо~/a/b
. Чтобы исправить это, вы можете использовать%(5~|…/%3~|%~)
.