Відповіді:
Для отримання подібного ефекту bash, зокрема ..., спробуйте:
%(4~|.../%3~|%~)
Це перевіряє, якщо шлях має принаймні 4 елементи ( %(4~|true|false)) і, якщо це правда, друкує деякі точки з останніми 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, оскільки окремі елементи шляху, очевидно, можуть бути досить довгими самі по собі. Використання %<дає набагато більш передбачувану максимальну довжину підказки.
Наприклад, щоб урізати ліворуч елемент шляху з розширенням 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~|%~).