Ars Longa, Vita Brevis

Простое решение проблемы смешанного форматирования

В программировании использование табуляции для создания отступов и форматирования исходного кода является темой для непрекращающихся дискуссий. Некоторые программисты полагают, что использование 8 пробелов для представления одного символа табуляции слишком много, мотивируя это тем, что просмотр кода с большим уровнем вложенности (и, как следствие, с большими отступами) затруднён. Программисты, предпочитающие использовать табуляцию, отвечают тем, что код с большим уровнем вложенности неудачен сам по себе.

Есть много аргументов как за использование табуляции, так и против. Тем не менее, при использовании табуляции возникают проблемы, если у человека, редактирующего впоследствии код, редактор сконфигурирован расширять табуляцию другим количеством пробелов. В результате в некоторых строках для отступах будет использоваться табуляция, в некоторых — пробелы или смесь из пробелов и табуляции. При просмотре в другом редакторе такой код может выглядеть просто ужасно.

К счастью, в Linux проблема решается очень просто (причем как для замены табуляции пробелами, так и наоборот).

Рассмотрим два случая. В обоих случаях будем полагать, что нам нужно произвести глобальную замену во всех файлах с расширением PHP.

Случай 1. Замена табуляций на пробелы.

Расширение табуляции до четырёх пробелов:

[-]
View Code Bash
find . -name "*.php" -type f -print0 | xargs -0 -I {} sh -c 'expand -t 4 "{}" | cat > "{}"'

Расширение табуляции до восьми пробелов:

[-]
View Code Bash
find . -name "*.php" -type f -print0 | xargs -0 -I {} sh -c 'expand -t 8 "{}" | cat > "{}"'

Расширение табуляции до восьми пробелов, не затрагивая символы табуляции, находящиеся после пробелов:

[-]
View Code Bash
find . -name "*.php" -type f -print0 | xargs -0 -I {} <span cla