*sh 行を短くする方法

*sh 行を短くする方法

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)

おすすめ記事