Назад | Перейти на главную страницу

Как вы используете VIM для редактирования табличных данных (таблиц)? В частности, файлы базы данных BIND (named) DNS

Когда дело доходит до вимминга, я обычно пурист. Я не люблю переназначать ключи или учиться полагаться на кучу плагинов. Мне нравится чувствовать себя таким же сильным на чужом боксе, как и на моем собственном dev box. Однако я верю в файлы синтаксиса. Несмотря на то, что решением может быть не файл синтаксиса (я использую bindzone.vim), я хочу, чтобы он мог делать что угодно.

Я регулярно просматриваю или редактирую данные, разделенные табуляцией (или запятой, но это будет бонусом). Ненавижу устанавливать переключатель табуляции на какое-то нелепое число, чтобы все было выстроено в линию. Пример: файлы зоны BIND ~ 40+, 6,2,5,15+. Итак, даже если я мог просматривать их на одном экране, если бы я установил ts = 40, я не смог бы. Я много лет искал решение для "динамического размера вкладки", но безуспешно.

Я ненавижу то, что мой единственный хороший способ редактирования или даже визуализации табличных данных - это перенести их на рабочую станцию ​​и открыть в Open Office. Там должен быть лучший способ.

Eсть список разработчиков патч для Vim, который, как говорят, реализует переменные табуляции. Это указал{1} находится на стадии бета-тестирования.
Очевидно, это потребует компиляции vim для серверов, на которых вы хотите его использовать.

Другой вариант было бы настроить пользовательский тип файла, который переводит табуляцию в пробелы, разделенные каким-либо специальным символом. Вы можете настроить автокоманды для запуска подпрограммы импорта (т.е. преобразования в столбцы с разделителями) при чтении и подпрограммы экспорта (для обратного преобразования к разделению табуляцией) при записи, так что в итоге она будет работать более или менее прозрачно.
Так, например, файл

Column 1 header\tColumn 2 header\tcolumn 3 header
first row, column 1\tfirst row, column 2\tfirst row, column 3

будет рассматриваться в vim как что-то вроде

Column 1 header»     «Column 2 header»     «Column 3 header
first row, column 1» «first row, column 2» «first row, column 3

Это более или менее не в моей голове; вполне может быть пакет vimscript, который это реализует. Если нет, то написать было бы несложно. Вам просто нужно убедиться, что символы разделителей столбцов - здесь «» »и« «» - фактически не используются в файле. Что касается файла конфигурации привязки, я думаю, что все, что не является ASCII, будет безопасным. Для повышения надежности, я думаю, вы могли бы дать vim несколько опций и заставить его сканировать файл, чтобы найти набор, которого нет в файле, или просто экранировать любой из этих символов.

Возможно, лучше вместо этого использовать символы, похожие на пробелы{2}, но не такие, как '\ xa0' или '\ u2002'; опять же, это будет работать правильно только в том случае, если в файле не было символа заполнения или у вас есть процедура импорта, которая экранирует те, которые есть.
Также я предполагаю, что знаком с обратным цитированием в стиле c: в первой части примера "\ t" представляет символ табуляции; последовательности \ x и \ u представляют собой шестнадцатеричные символы и символы Unicode.

Если вы в конечном итоге реализуете или найдете что-то подобное, сообщите мне.

{1}: http ... groups.google.com/group/vim_dev/web/vim-patches?pli=1
{2}: http ... www.cs.tut.fi/~jkorpela/chars/spaces.html
NB: запутанный олдскульный стиль ссылок из-за моей недостаточной репутации на этом сайте.

Отправьте запрос функции. VIM нужна опция для отображения различных позиций табуляции, как это обычно бывает в любом текстовом редакторе. Так много людей используют vim в качестве текстового процессора, я удивлен, что его еще нет. Я предлагаю изменить табуляцию, чтобы она принимала массив вместо целого числа.

Как насчет того, чтобы использовать пробелы вместо табуляции и просто использовать R (вместо i) для редактирования? Таким образом, вы ничего не выровняете заново (кроме тех случаев, когда сначала вы все переставляете).

Я думаю, вы сможете добиться желаемого с помощью Плагин выравнивания. (Приносим извинения, если вы уже попробовали.)

Знаете ли вы, что можете автоматически устанавливать настраиваемые свойства файлов, определяя настраиваемую модельную линию? Я понимаю, что это не решает вашу проблему, но избавит вас от необходимости вводить свои пользовательские свойства каждый раз, когда вы хотите выровнять свой файл.

  • добавьте в начало файла '# vi: ts = 40'
  • и не забудьте установить модельную строку в вашем .vimrc

Это работает и в vi ...

Куча ответов не совсем по существу, но, возможно, некоторые из них как-то соответствуют вашим рабочим схемам:

Имейте:%! Sed -e 'something', который делает то, что вам нужно, и поместите его в комментарий где-нибудь в файле, чтобы вы могли вставить его (раньше я сохранял:%! Sort -u в файле привязки для этого типа вещей).

Если это все время один и тот же сервер, создайте где-нибудь на нем сценарий (bash | perl | awk | sed), который можно вызывать аналогичным образом из vim.

Команда: make также полезна, если вы можете поместить туда make-файл.

Храните все данные в SQL и генерируйте файлы оттуда, пока вы редактируете определенные таблицы или представления (я только наполовину шучу).

Используйте команды вырезания (1) и вставки (1) (из vim или из вспомогательного сценария оболочки) для эмуляции представлений SQL.

Насколько я знаю, вертикальные складки в vim невозможны, но выбор блока (с помощью ctrl-V) часто бывает полезен.

Макросы!