#variables #zsh #prompt
#переменные #zsh #приглашение
Вопрос:
Я хотел бы объявить свое приглашение ZSH с использованием нескольких строк и комментариев, что-то вроде:
PROMPT="
%n # username
@
%m # hostname
# space
%~ # directory
$
# space
"
(например, что-то вроде perl regex «игнорировать режим пробелов»)
Я мог бы поклясться, что раньше делал что-то подобное, но больше не могу найти эти старые файлы. Я искал варианты «приглашения объявить zsh в нескольких строках», но не совсем нашел его.
Я знаю, что могу использовать для продолжения строки, но тогда мы получаем новые строки и пробелы.
редактировать: Возможно, я неправильно помню комментарии — вот пример без комментариев.
Комментарии:
1. Поскольку
#
в вашем коде они находятся внутри строки, они не вводят комментарии, а являются буквальной частью строки. В zsh нет ничего похожего на игнорирование пробелов , как в регулярном выражении Perl.
Ответ №1:
Не совсем то, что вы ищете, но вам не нужно определять PROMPT
в одном назначении:
PROMPT="%n" # username
PROMPT ="@%m" # @hostname
PROMPT =" %~" # directory
PROMPT ="$ "
Вероятно, ближе к тому, что вы хотели, это возможность объединения элементов массива:
prompt_components=(
%n # username
" " # space
%m # hostname
" " # space
"%~" # directory
"$"
)
PROMPT=${(j::)prompt_components}
Или вы могли бы позволить j
флагу добавлять разделители пробелов, а не помещать их в массив:
# This is slightly different from the above, as it will put a space
# between the director and the $ (which IMO would look better).
# I leave it as an exercise to figure out how to prevent that.
prompt_components=(
"%n@%m" # username@hostname
"$~" # directory
"$"
)
PROMPT=${(j: :)prompt_components}