Описание тега autotools
С ЗШ 4.3.11, вы можете использовать Z и
параметр расширения флаг для разбиения строки стоимость по данным нормальной оболочки разбора правил, а также устраняют замечания (с
возможностью З
) и обрабатывать строки как обычный пробел вместо замены их точкой с запятой (п
вариант з
). Можно потом сшить обратно вместе (Дж::
) и оценить уровень цитирования (м
) позволю процитировать пробелов и других проблемных символов (таких как “голая” комментарий вводные символы):
ПС1=${(Д::Д)${(з:спицы:):-$'
%Ф{063}%1 формат # синий
~ # показать текущий каталог
%Ф" "
%(1В.%Ф{099}%1В %Ф.) # показать ГИТ филиал если git РЕПО в фиолетовый
%Ф{063} формат # синий
%# # % для пользователя, и # для root
%Ф" "
'}}
Обратите внимание: это разбор режиме, кажется, знаю, что надо разобрать весь %(в...)
выражение как одно слово, так что мы не должны защищать пространство встроенного в условной стоимости. Тем не менее, мы должны защитить “верхнего уровня” пространствах (те, которые приходят после %Ф
) с тем, в противном случае будут воспринимать как нормальное слово сепаратор. Окончательный unquoting пройти процесс любой механизм котирования (т. е. \
, "
, ""
, $"
), Так что вы можете выбрать то, что вы используете, чтобы защитить специальные символы (например, “верхний уровень” пространства или комментарий посредники, предназначенные для конечного значения).
Если вы не используете 4.3.11, то вы можете использовать массив, чтобы позволить вам смешивать комментарии со строки элементы. Вам, вероятно, придется использовать больше цитировать, чем с з
параметра развертывания флага, но результат все еще может быть терпимо.
ps1_arr=(
%Ф{063}%1 формат # синий
\~ # показать текущий каталог
%Ф' '
'%(1В.%Ф{099}%1В %Ф.)' # показать ГИТ филиал если git РЕПО в фиолетовый
%Ф{063} формат # синий
%\# # % для пользователя, и # для root
%Ф' '
)
ПС1=${(х::)ps1_arr}
Некоторые заметки о цитировании:
- Вы можете избежать цитируя
~
если вы говорите,%1~
а не разбивать ее (это%~
с аргументом1
, в конце концов). - Я процитировал весь
%(в...)
слово, но только в скобках и пространство нуждается в защите. - Вам нужно только цитировать
#
в%#
если у вас есть EXTENDED_GLOB включен. - Пространства, которые, случается, приходят после того, как
%ф
нужна какая-то цитируешь. Вы можете использовать обратную косую черту, но это может выглядеть как продолжение линии, если у вас нет “видны пробелы” в вашем редакторе.