Как преобразовать пробелы в табуляции в вашей программе
По code guidelines PHPbb в коде нужно использовать табуляции, вместо пробелов. К сожалению, я об этом поздновато узнал, теперь надо всё, что я написал привести к правильному виду.
Оказывается, в Linux есть специальная утилита для этого — unexpand (находится в пакете coreutils). Кстати, есть и противоположная по действию утилита — expand.
find -name ’*.php’ -exec sed -i ’s/ /\t/;’ ’{}’;
Комментарий для hshhhhh.name:
Как заменить только те пробелы, которые в начале строки?
Комментарий для hshhhhh.name:
Хорошее направление мысли, но такая строчка исправит все пробелы, а не только форматирующие. Можно, конечно сделать что-то типа `’s/^ /\t/’`, но тогда надо будет прогонять несколько раз (тем больше, чем глубже форматирование отступами). Всё-таки, coreutils — это не просто по приколу.
Комментарий для hshhhhh.name:
Естественно, должны заменяться по количеству пробелов, 16 пробелов — две табуляции, 8 — одна.
Я думал это любой текстовый редактор умеет делать. Text → Entab (или Detab) в ББЭдите, например.
Комментарий для Илья Бирман:
Понятия не имею. А зачем мне текстовый редактор, если всё можно сделать одной строкой?
Такая функция есть в каждом первом текстовом редакторе для программистов, ну и perl-программисты за 5 минут напишут соответствующий скрипт в одну строчку или оформят в форме какого нибудь верблюда, по желанию...
Кстати, приятно — expand и unexpand есть в MacOS, ничего ставить не надо
Комментарий для astur.net.ru:
find -name ’*.php’ -exec sed -i ’s/^( ){24}/\t\t\t/;s/^( ){16}/\t\t/;s/^( ){8}/\t/;’ ’{}’;
Комментарий для Евгения Степанищева:
дикость какая. всю жизнь считал что табуляция = 4 пробела.
Комментарий для viperet.info:
а другие, другие программисты справятся?
Комментарий для hshhhhh.name:
Ну вот оно надо так извращаться? Если можно одной командой сделать. Тем более, что тут всего лишь третья вложенность.
Табуляция обычно равна 4 или 8 пробелам. Например, в DOS это 8 символов.
Комментарий для viperet.info:
Т. е. мне предлагается вручную найти те файлы, которые я изменял, их открыть, вызвать эту функцию каждого первого текстового редактора и сохранить? Давайте я уж тремя командами командной строки их как-нибудь сразу все обработаю?
Да есть уже такая утилита, вот на: unexpand, зачем писать ещё что-то?
Комментарий для Евгения Степанищева:
По-моему весело. Можно еще и регу модную написать а не тупо копипасту :). Ну и я не мастер bash’a, там наверняка есть более хитрые решения.
На повершелле так же легко можно сделать?
Комментарий для hshhhhh.name:
Ну, можно сделать замену пробелов в начале строки для любого уровня, например, так:
cat file | %{ If ($_ -match ’^(?: {4})+’) { $_ -replace $matches[0], («`t» * ($matches[0].length / 4)) } Else {$_} }
В чём вы работаете, в каком редакторе? Вы вручную там отступы делали пробелами? Или специально делали всё пробелами?
Комментарий для jankkhvej.blogspot.com:
В данном проекте я пользовался FARом
У меня стоит настройка «преобразовывать табуляции в пробелы».
Комментарий для Евгения Степанищева:
Но зачем?!
Комментарий для jankkhvej.blogspot.com:
Я, в последнее время, пишу чаще всего на Python, а там используются 4 пробела в качестве отступа: http://www.python.org/dev/peps/pep-0008/
Но есть люди, которые не соблюдают style guide, лучше автоматически исправлять исходники.
Комментарий для Евгения Степанищева:
Удивлён предпочтением к пробелам в Python. Рад, что там всё-таки не отказались от \t.