Чтобы получить аналогичный эффект bash, в том числе ..., попробуйте:
%(4~|.../%3~|%~)
Это проверяет, является ли путь не менее 4 элементов long ( %(4~|true|false)) и, если true, печатает несколько точек с последними 3 элементами ( .../%3~), в противном случае печатается полный путь %~.
Я заметил, что, bashкажется, сокращает пути в домашнем каталоге по-разному, например:
~/.../some/long/path
Для аналогичного эффекта вы можете использовать:
%(5~|%-1~/…/%3~|%4~)
Это проверяет, больше ли путь, чем 5 элементов, и в этом случае печатает первый элемент ( %-1~), некоторые точки ( /…/) и последние 3 элемента. Это не совсем то же самое, что пути, которые не находятся в вашем домашнем каталоге, также будут иметь первый элемент в начале, тогда bashкак в этом случае просто печатает точки. Так
Я как первый вариант лучше, но учтите , что она показывает , ~/a/bкак .../a/bвместо ~/a/b. Чтобы исправить это, вы можете использовать %(5~|…/%3~|%~).
Момар
Для новичков в zsh (таких как я) вы хотите использовать этот синтаксис с PROMPTвашей переменной среды .zprofile, например:EXPORT PROMPT="%(5~|%-1~/…/%3~|%4~)"
Райан Х.
1
@RyanH. Спасибо, прочитав мой ответ еще раз, я замечаю, что никогда не упоминал, где нужно сделать эти настройки. Я должен буду это исправить. В вашем комментарии есть две небольшие вещи: настройки для интерактивных сессий оболочки должны быть сделаны, .zshrcи нет никакой необходимости в exportкаких-либо внутренних параметрах оболочки, таких как PROMPT.
Adaephon
@Adaephon Спасибо за информацию. Я исправлю! :)
Райан Х.
8
В дополнение к другим ответам, приведенным здесь, вы также можете использовать %<для усечения пути до заданного количества символов . Я считаю, что это предпочтительнее использования %<n>d, поскольку отдельные элементы пути, очевидно, сами по себе могут быть довольно длинными. Использование %<дает гораздо более предсказуемую максимальную длину приглашения.
Например, чтобы укоротить элемент path с расширением tilde ( %~) до 15 символов и заменить удаленные символы на .., вы можете сделать что-то вроде этого:
PROMPT='%n@%m:%15<..<%~%<<%# '
Это задокументировано в руководстве по Zsh в разделе « Быстрое расширение» в конце страницы.
Общая форма такова %d: если любое последующее положительное целое число dуказывает конечные компоненты для показа текущего пути, нулевое среднее значение показывает весь путь, отрицательное целое число означает начальный путь для отображения:
%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~, например,
~/a/b
как.../a/b
вместо~/a/b
. Чтобы исправить это, вы можете использовать%(5~|…/%3~|%~)
.PROMPT
вашей переменной среды.zprofile
, например:EXPORT PROMPT="%(5~|%-1~/…/%3~|%4~)"
.zshrc
и нет никакой необходимости вexport
каких-либо внутренних параметрах оболочки, таких какPROMPT
.В дополнение к другим ответам, приведенным здесь, вы также можете использовать
%<
для усечения пути до заданного количества символов . Я считаю, что это предпочтительнее использования%<n>d
, поскольку отдельные элементы пути, очевидно, сами по себе могут быть довольно длинными. Использование%<
дает гораздо более предсказуемую максимальную длину приглашения.Например, чтобы укоротить элемент path с расширением tilde (
%~
) до 15 символов и заменить удаленные символы на..
, вы можете сделать что-то вроде этого:Это задокументировано в руководстве по Zsh в разделе « Быстрое расширение» в конце страницы.
источник
Вы можете использовать
%3d
быстрое расширение :Общая форма такова
%d
: если любое последующее положительное целое числоd
указывает конечные компоненты для показа текущего пути, нулевое среднее значение показывает весь путь, отрицательное целое число означает начальный путь для отображения:источник
См. Http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html или
man zshmisc
Таким образом, чтобы получить что-то похожее
PROMPT_DIRTRIM=3
, вы можете использовать%3d
или%3~
, например,источник