Существует TiLP. Я использовал его со своим TI-84 + SE: это позволяет Вам управлять приложениями, программами и переменными и IIRC, это также имеет "экранную функцию" представления — или это имеет функцию снимка экрана, или можно просто использовать import
или что-то еще для захвата снимка экрана TiLP, показывающего экран.
Быстрая escape-последовательность %~
(включенный в $current_dir
) расширяется до текущего каталога, принимая сокращения во внимание. Сокращения:
~
для Вашего корневого каталога;~joe
для корневого каталога пользователя joe
;~foo
для именованного каталога: каталог, искаженный к foo
с hash -d foo=…
;~[bar]
для динамического именованного каталога.Можно использовать %/
вместо %~
. Это никогда не использует сокращения каталога.
Если Вы хотите быть более необычными, можно выполнить собственный код, чтобы определить, как текущий каталог отображен. Один подход должен использовать замену параметра в строке приглашения. Это требует prompt_subst
опция, которая будет установлена, который делает oh-my-zsh (иначе: setopt prompt_subst
). Текущий каталог всегда доступен в параметре PWD
. Вот простая версия, которая только сокращает Ваш корневой каталог к ~
:
local current_dir='%{$terminfo[bold]$fg[cyan]%} ${${PWD/#%$HOME/~}/#$HOME\//~/}%{$reset_color%}'
${${PWD/#%$HOME/\~}/#$HOME\//\~/}
средства: если $PWD
точно то же как $HOME
, затем установите результат на ~
, иначе установите результат на $PWD
; затем, если текущий результат начинается $HOME/
, затем замените этот префикс ~/
, иначе оставьте результат без изменений.
Более четкий подход должен поддержать параметр, содержащий симпатичную печатную версию текущего каталога. Обновите этот параметр в chpwd
сцепите функцию, которая выполняется на каждом изменении текущего каталога. Также инициализируйте тот параметр в Вашем .zshrc
.
Существует только один chpwd
функция, не переопределяйте oh-my-zsh's. Oh-my-zsh chpwd
вызывает функцию в массиве chpwd_functions
, поэтому добавьте Ваш к массиву.
function my_update_pretty_PWD {
case $PWD in
$HOME(/*)#) pretty_PWD=\~${PWD#$HOME};;
*) pretty_PWD=$PWD;;
esac
}
chpwd_functions+=(my_update_pretty_PWD)
my_update_pretty_PWD
local current_dir='%{$terminfo[bold]$fg[cyan]%} ${pretty_PWD}%{$reset_color%}'
Если Вы хотите сократить корневые каталоги пользователей, но не названные каталогами, можно очистить корневые каталоги в подоболочке и использовать %
расширение параметра отмечает для выполнения автоматических сокращений в подоболочке.
function my_update_pretty_PWD {
pretty_PWD=$(hash -rd; print -lr -- ${(%)PWD})
}
Или если Вы предпочитаете встроенный подход:
local current_dir='%{$terminfo[bold]$fg[cyan]%} $(hash -rd; print -lr -- ${(%)PWD})%{$reset_color%}'
auto_name_dirs
опция ответственна за это поведение.
Используйте команду unsetopt auto_name_dirs
отключить его.
auto_name_dirs
не влияет на названные каталоги. Это влияет на параметры, которые, оказывается, установлены на имя каталога. Выдержать сравнение zsh -c 'hash -d here=$PWD; p="%~"; echo ${(%)p}'
с zsh -c 'here=$PWD; echo ~here; p="%~"; echo ${(%)p}'
.
– Gilles 'SO- stop being evil'
11.04.2013, 04:39
auto_name_dirs
точно проблема здесь. Все переменные среды (которые указывают на каталог) привыкают при расширении '% ~'. Автоматически добавленного к hash -d
список. Этого, кажется, не происходит в Вашем примере кода, хотя, вероятно, потому что это не является интерактивным?! Но так как OP использует ОМЗ, и у них есть это значение по умолчанию, и я просто испытывал ту же проблему, я совершенно уверен.
– blueyed
04.11.2013, 19:29
my_update_pretty_PWD
кому:chpwd_functions
производит немного раздражающее поведение в моей системе (с zsh 5.0.2). Каждый раз, когда я запускаю оболочку, подсказка не показывает текущий каталог (какой бы ни это может быть, в зависимости от того, где я запускаю zsh с). Проблема уходит, как только я ввожу acd
команда (cd .
достаточно). Я также отредактировал Ваше встроенное решение, потому что после рассмотрения вывода я заметил, что это печатает дополнительное\
в подсказке (это находится в определенииlocal_current_dir
). – Amelio Vazquez-Reina 14.04.2013, 05:43my_update_pretty_PWD
также однажды в Вашем.zshrc
. – Gilles 'SO- stop being evil' 14.04.2013, 11:49