Вы можете разбивать длинные строки на escaped newlines, т.е. \
сразу за ним следует новая строка:
ls_colors_parsed=${${(@s.:.)LS_COLORS}/(#m)\**=[0-\
9;]#/${${MATCH/(#m)[0-9;]##/$MATCH=$MATCH=04;$MATC\
H}/\*/'=(#b)($PREFIX:t)(?)*'}}
WARNING
Хотя вы можете разбивать строки таким образом почти везде, но есть исключения. Она не будет работать внутри одного цитируемого текста или после \
экранирующей последовательности (\n
, \x40
, ...). Некоторые другие конструкции оболочки также могут ломаться: Если в вашем примере поставить попытку разбить между ($PREFIX
и :t)
, то она будет работать некорректно.
Вы можете сделать что-то вроде:
setopt extendedglob
alias 'verbose{{=read -rd "" -u9 _code 9<<-"}}";\
eval "${_code//[[:space:]]#$'\''\n'\''[[:space:]]#}"'
verbose{{
ls_colors_parsed=${
${(@s.:.)LS_COLORS}
/(#m)\**=[0-9;]#
/${
${MATCH
/(#m)[0-9;]##
/$MATCH=$MATCH=04;$MATCH
}
/\*
/'=(#b)($PREFIX:t)(?)*'
}
}
}}
Новые строки, окруженные пробелами, удаляются перед передачей в eval
для интерпретации.