Табы в пробелы и обратно
Вставьте код или текст и переведите отступы с табуляции на пробелы или наоборот. Выберите ширину табуляции и решите, менять только отступ в начале строки или каждый таб в строке; позиции табуляции учитываются, поэтому столбцы остаются выровненными.
Работает в браузере: всё, что вы вводите, никуда не отправляется.
Как пользоваться
- Вставьте текст.
- Выберите пробелы или табы и ширину табуляции, принятую в вашем проекте.
- Для кода оставьте «Только отступы»; для таблиц, выровненных табами, снимите флажок.
- Скопируйте результат. Строка под ним показывает, сколько строк изменилось.
Как это работает
Конвертер измеряет каждую строку в столбцах. Таб сдвигает к следующему числу, кратному ширине; любой другой символ занимает один столбец. При замене на пробелы каждый таб заменяется пробелами до этой позиции. При замене на табы отступ измеряется и записывается целыми табами плюс оставшимися пробелами, а в режиме всей строки каждая серия из двух и более пробелов делится по позициям табуляции, которые она пересекает.
Пример
При ширине 4 строка, начинающаяся с двух табов, \t\treturn 1, превращается в восемь пробелов и return 1. В обратную сторону b (шесть пробелов) становится одним табом и двумя пробелами. По всей строке при ширине 8 ab\tc превращается в ab + шесть пробелов + c, потому что позиция табуляции — столбец 8.
Советы
- Python запрещает непоследовательно смешивать табы и пробелы в одном блоке; преобразование всего файла устраняет такие ошибки.
- В Makefile строки рецептов должны начинаться с таба: преобразуйте их в табы или не трогайте такие файлы.
- Чтобы увидеть, какие символы есть в файле до и после, воспользуйтесь визуализатором пробелов.
Частые вопросы
Чем отличаются «только отступы» и строки целиком?
В режиме «только отступы» преобразуются лишь пробельные символы в начале каждой строки, поэтому табы и пробелы внутри строки — например, перед комментарием — остаются как были. Снимите флажок, чтобы преобразовать каждый таб или каждую серию пробелов, доходящую до позиции табуляции, в любом месте строки.
Почему таб иногда заменяется меньшим числом пробелов, чем ширина?
Таб сдвигает текст к следующей позиции табуляции, кратной ширине, а не на фиксированное расстояние. При ширине 4 таб после двух символов добавляет два пробела. Конвертер считает столбцы так же, поэтому текст, выровненный табами, остаётся выровненным.
Что происходит с отступом, не кратным ширине?
При замене на табы отступ превращается в столько табов, сколько помещается, плюс оставшиеся пробелы. Шесть пробелов при ширине 4 станут одним табом и двумя пробелами.
Превращаются ли одиночные пробелы между словами в табы?
Нет. При замене на табы по всей строке табами становятся только серии из двух и более пробелов, доходящие до позиции табуляции, — по тому же правилу, что у команды Unix unexpand -a. Одиночные пробелы между словами остаются.