zsh
最近1行のコードに出会いました。
ls_colors_parsed=${${(@s.:.)LS_COLORS}/(#m)\**=[0-9;]#/${${MATCH/(#m)[0-9;]##/$MATCH=$MATCH=04;$MATCH}/\*/'=(#b)($PREFIX:t)(?)*'}}
これが私を驚かせただけでなく、80文字の制限をはるかに超えました。残念ながら短縮できる明確な方法はありません。このような行がたくさんあります(分割できない非常に複雑な代替項目で構成されています)。その行の長さが80文字未満であることを望む場合、これらの行を処理する標準的な方法は何ですか?
ベストアンサー1
次のように長い行を破ることができます。改行文字エスケープ、\
その後に改行文字が続きます。
ls_colors_parsed=${${(@s.:.)LS_COLORS}/(#m)\**=[0-\
9;]#/${${MATCH/(#m)[0-9;]##/$MATCH=$MATCH=04;$MATC\
H}/\*/'=(#b)($PREFIX:t)(?)*'}}
警告する
ほとんどすべての場所でこの方法で行をラップできますが、例外があります。一重引用符で囲まれたテキストの内側または\
エスケープシーケンス(\n
、、\x40
...)の後には機能しません。他のいくつかのシェル構成も中断される可能性があります。($PREFIX
例では、間に中断しようとすると正しく動作しません。:t)