Как я могу заменить внутренние вкладки пробелами, сохраняя выравнивание? - PullRequest
3 голосов
/ 06 октября 2009

Мне нравится использовать пробелы для отступов, а не табуляции; заменить вкладки в начале строки просто в sed или vim:

s/^I/    /g

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

'foo'^I ^I  => 'bar',
'bazzle'^I  => 'qux',

Каждая вкладка не соответствует заданному количеству пробелов для поддержания выравнивания. У кого-нибудь есть хитрая идея о том, как заменить символы табуляции пробелами, сохраняя правильное выравнивание?

Ответы [ 2 ]

12 голосов
/ 06 октября 2009

В Linux и BSD найдите инструменты расширения и развертывания командной строки. Функция расширения преобразует вкладки в пробелы, а функция развертывания выполняет противоположную операцию. Самое простое использование:

expand filename

Если вы похожи на меня, используя 4 пробела для вкладок, то:

expand -t 4 filename

По умолчанию разверните распечатки до стандартного вывода и оставьте исходный файл в такте. Для замены на месте у вас есть как минимум два варианта:

$ cp filename backup
$ expand -t 4 filename > tempfile
$ mv tempfile filename

Или вы можете вызвать раскрытие в vi:

$ vi filename
:%!expand -t 4
7 голосов
/ 06 октября 2009

В Vim:

:retab

или, если после пробела есть символы:

:retab!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...