6

Мне часто приходится вручную манипулировать текстом с разделителями табуляции для ввода данных и других целей. Когда я делаю это, это помогает, если текст выровнен должным образом по столбцам. Например (при условии вкладок с 4 пробелами):

# original format
abcdefghijklmnop    field2
abcdefgh    field2
abcdefghijkl    field2

# ideal format
abcdefghijklmnop    field2
abcdefgh            field2
abcdefghijkl        field2

Я очень хорошо знаком с использованием утилиты column для колонки текста таким образом, но проблема в том, что она использует пробелы для выравнивания колонок, и мне особенно нужны вкладки. Это требование также, по-видимому, исключает плагин Tabularize.

Есть ли какой-нибудь способ, которым я могу колонизировать текст с помощью вкладок, в рамках vim или в оболочке? Похоже, я мог бы сделать это с groff/tbl , но, честно говоря, я бы предпочел колонизировать это вручную, чем связываться с этим ....

5 ответов5

5

Установите размер отображения вкладки чуть больше самого длинного поля.

# original format
abcdefghijklmnop<Tab>field2
abcdefgh<Tab>field2
abcdefghijkl<Tab>field2
I have spaces!<Tab>field2

В Vim,

:echo len("abcdefghijklmnop") " Reports 16
:set noexpandtab tabstop=17

Вы, вероятно, можете сжать это до одной команды, но я не знаю как. Если вы используете современный Vim,::set list будет указывать жесткие вкладки с причудливым символом (который вы также можете настроить). В противном случае они просто будут отображаться как ^I (не то, что вы хотите) или пробел.

# displays like this
abcdefghijklmnop>field2
abcdefgh>        field2
abcdefghijkl>    field2
I have spaces!>  field2

РЕДАКТИРОВАТЬ: Пример из реального работает Vim!

5

Csv.vim - плагин Filetype для csv-файлов также поддерживает файлы с разделителями табуляции и имеет для этого команды :ArrangeColumn и :UnArrangeColumn .

1

Когда вы правильно выровняете таблицу (используя упомянутый Tabularize или альтернативный плагин Align ), вы можете преобразовать пробелы во вкладки с помощью следующих команд:

:%retab!
:%substitute/ \+/\t/g

Первая команда заменяет отступ на вкладки, где это возможно, без изменения ширины (предполагается, что вы :set noexpandtab), вторая затем преобразует оставшиеся пробелы в (большие) табуляции.

0

Используя плагин godlygeek/tabular, вы можете выбрать

:%Tabularize /\t.*/
-1

Столбцы, разделенные табуляцией, работают только тогда, когда программа, используемая для их отображения, может расширять / сжимать символы табуляции, чтобы соответствовать их действительному значению. Vim, и я полагаю, что большинство других текстовых редакторов не могут использовать вкладки для табуляции, потому что вкладки имеют одну фиксированную ширину. Vim может использовать сочетание вкладок и пробелов для получения примерно одинакового результата, но то, что вы получите, очевидно, больше не разделено табуляцией.

Вам нужно будет конвертировать все эти смеси табуляции / пробелов в отдельные вкладки при каждой записи.

Короче говоря, простой текстовый редактор, вероятно, не подходящий инструмент для работы.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .