Zsh: расширение хэшированных имен каталогов в приглашении

Я экспериментирую с переходом от bash к zsh и, в частности, с хэш-функцией; так что

hash -d Do=~/Downloads 

означает, что я могу ввести cd Do чтобы немедленно перейти в этот каталог. Ницца. Но в подсказке директория указана как ~Do вместо ~/Downloads что я бы предпочел увидеть. Есть ли способ использования хеш-значений каталога, чтобы запрос расширялся до полного имени каталога (с начальным ~ если в каталоге пользователя)?

2 Solutions collect form web for “Zsh: расширение хэшированных имен каталогов в приглашении”

Вывод подсказки %~ сокращает текущий каталог, используя хешированные каталоги, когда это возможно. Чтобы прекратить использование сокращений каталогов, вы можете использовать %/ вместо этого, но это также не сокращает домашний каталог.

Чтобы сокращать только домашний каталог, установите опцию prompt_subst (это может потребовать добавления дополнительных обратных косых черт в местах в вашем приглашении). Вместо %~ или %/ используйте ручное расширение от $PWD .

 setopt prompt_subst PS1='%B${${PWD/#%$HOME%/\~\/}/#$HOME/\~}\$%b ' 

Если вы хотите выполнить более сложные замены, вы можете установить переменную в chpwd hook и использовать ее в своем приглашении. Даже для простого случая, показанного выше, этот подход является более подробным, но, возможно, более читаемым.

 setopt prompt_subst chpwd () { case $PWD in $HOME/*) prompt_PWD=\~/${PWD#$HOME};; $HOME) prompt_PWD=\~;; *) prompt_PWD=$PWD;; esac } PS1='%B$prompt_PWD\$%b ' 

Вы можете предпочесть гибридный подход, который расширяет только некоторые хешированные каталоги. Это легко подключить к подходу chpwd (или даже к прямому подходу, но он менее читабельен). Например, следующая команда chpwd аббревиатура только каталогов, которые начинаются с /home (предположительно других домашних каталогов пользователей) и которые не находятся в вашем домашнем каталоге.

 chpwd () { case $PWD in $HOME/*) prompt_PWD=\~/${PWD#$HOME};; $HOME) prompt_PWD=\~;; /home/*) prompt_PWD=${(%)${:-%~}};; *) prompt_PWD=$PWD;; esac } 

Добавление конечного / к имени каталога приведет к желаемому эффекту.

  • Автозаполнение ZSH дает по-видимому случайные ошибки через некоторое время
  • Имена списков псевдонимов, функций и переменных в zsh
  • Шелл Шрифт над SSH
  • Скрытие завершения zsh
  • История-поиск в zsh работает только для команд?
  • Преобразование истории в скрипт?
  • Скрипт Zsh, который принимает переменное количество аргументов
  • как grep для пакетов на основе несжатого размера файла?
  • каталог автозаполнения zsh
  • Увеличение / уменьшение числа в файле из (zsh) скрипта
  • В чем разница между тем, где и где
  • Interesting Posts

    Создайте загрузочное ядро ​​QEMU из существующей установки

    Как я могу совместно использовать профиль thunderbird (icedove) в режиме реального времени между двумя компьютерами?

    Как запустить программу в фоновом режиме, а также с помощью && выполнить другую команду

    как сохранить строки с определенной строкой

    Подголовник внутри кавычек

    В bash, каковы потенциальные негативные последствия приостановки процесса с контролем-z?

    Выполнение двух действий с выходом команды

    Сеанс XFCE начинается с 4 пустых терминалов. Как иметь чистый рабочий стол при запуске?

    Скорость передачи при копировании из Windows в Pi

    Как перезапустить (или сбросить) запущенный процесс в Linux

    строки обработки текста столбцам для блока

    Как использовать sed для вставки строки вверху моего файла?

    Обнаружение экрана и обратная передача мыши (ось x & y) kali linux

    Символическая ссылка, начинающаяся с. #

    Что произойдет, если я удалю все пароли пользователей?

    Linux и Unix - лучшая ОС в мире.