Следуя PSR, мой редактор настроен на работу с отступами в 4 пробела, эта настройка применяется при открытии/сохранении файла, заменяя все лишние табы на пробелы.
Однако бывает так что некоторые файлы проекта обязаны иметь в качестве отступов табы. Так как мне лень ковыряться в настройках редактора и вводить какие-нибудь исключения-шмисключения, я сделал себе такой воркфлоу:
Начну с
Итак,
Здесь надо отметить три момента:
Здесь мы по-прежнему заменяем 8 пробелов на таб, но результат уже записываем в другой файл (
Добавляем опцию с длиной последовательности пробелов:
Здесь мы заменяем на таб последовательности из 4 символов.
Флаг t также может поддерживать список из длительностей пробельных последовательностей, например:
Но закономерности такой замены вам предстоит выяснить самим)
Наконец, чтобы заменить вообще любые пробельные символы в тексте, а не только те, что в начале строк, - используйте флаг a
Перейдем к
Хелп по командам можно получить по флагу
Однако бывает так что некоторые файлы проекта обязаны иметь в качестве отступов табы. Так как мне лень ковыряться в настройках редактора и вводить какие-нибудь исключения-шмисключения, я сделал себе такой воркфлоу:
- открываю нужный файл в редакторе
- редактирую
- сохраняю
- командой
unexpand
заменяю пробелы на табы обратно.
unexpand
и expand
.Начну с
unexpand
, так как ей приходится пользоваться чаще.Итак,
unexpand
заменит в файле пробелы на табуляции. Синтаксис прост:
> unexpand spaced_file.js
Здесь надо отметить три момента:
- Результат выполнения будет выведен в stdout.
- На табуляцию будут заменены последовательности в 8 пробелов. То есть последовательности меньше чем из 8 пробелов - не заменятся на таб, а больше 8 пробелов - заменятся на число табов, кратное восьми
- Замена будет произведена в началах строк (что в общем случае и требуется)
> unexpand spaced_file.js > tabbed_file.js
Здесь мы по-прежнему заменяем 8 пробелов на таб, но результат уже записываем в другой файл (
tabbed_file.js
). Кстати, использование одного и того же файла в качестве входного и выходного приводит к тому что файл становится пустым, поэтому лишний раз не экспериментируйте.Добавляем опцию с длиной последовательности пробелов:
> unexpand spaced_file.js -t 4 > tabbed_file.js
Здесь мы заменяем на таб последовательности из 4 символов.
Флаг t также может поддерживать список из длительностей пробельных последовательностей, например:
> unexpand spaced_file.js -t 2,4 > tabbed_file.js
Но закономерности такой замены вам предстоит выяснить самим)
Наконец, чтобы заменить вообще любые пробельные символы в тексте, а не только те, что в начале строк, - используйте флаг a
> unexpand spaced_file.js -a > tabbed_file.js
Перейдем к
expand
, команда работает ровно наоборот - заменяет табы на пробельные последовательности определенной длины. Примеры:
# Заменяем ЛЮБЫЕ табы на последовательности из 8 пробелов, поведение по умолчанию
> expand tabbed_file.js > spaced_file.js
# Заменяем ЛЮБЫЕ табы на последовательности из 4 пробелов
> expand tabbed_file.js -t 4 > spaced_file.js
# Заменяем табы в начале строк на последовательности из 2 пробелов
> expand tabbed_file.js -i -t 2 > spaced_file.js
# Вывод в тот же файл также сделает его ПУСТЫМ, повнимательнее
Хелп по командам можно получить по флагу
--help
Комментариев нет:
Отправить комментарий