Создадим файл с табуляцией:
echo -e "\t1\n         2" | unexpand -t8 > 1.txt
Получим в 1.txt:
<------>1
<------> 2
Где <------> - 1 таб.
Приведем indent к одному виду - пробелам, где 1 таб равен 8 пробелам:
expand -t8 1.txt > 2.txt
Получим в 2.txt:
        1
         2
Получаем некий аналог dos2unix и unix2dos, только для табов и пробелов.
Теперь о применении такого на практике, до недавнего времени я тоже не знал разницу между indentation и alignment. Приведу примеры о чем идет речь.
Это — indentation:
for (int i = 0; i < 10; i++) {
    if (a[i] == 0) {
        do_something(i);
    }
}
А вот это — alignment:
int some_variable = 0;
int v1            = 0;
Соль в том, что indentation не поплывет в разных редакторах, с разными размерами таба, а вот alignment с табами поплывет 100%.
Следовательно, если хотим использовать табы, используем только в
indentation, ноalignmentделаем исключительно пробелами. В таком случае использоватьexpandиunexpandнужно с особой осторожностью, чтобы не задетьaligement.
Ссылки по теме:
Comments
comments powered by Disqus