Ответы:
Чтобы получить аналогичный эффект 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~|%~).