Vim: Технический подход - PullRequest
       5

Vim: Технический подход

0 голосов
/ 02 декабря 2011

У меня есть 2500 строк документа, который является выходной таблицы (Excel).Он согласован и повторяется в документе примерно 100 раз, хотя и не идеально повторяется в каждой строке, поскольку данные за цикл немного различаются.В каждом (25-строчном) цикле я мог собрать как минимум 30 фрагментов информации для загрузки в пользовательский загрузчик для заполнения базы данных на веб-сайте.

Моя первая мысль - искать / заменять, используя субматч (*), чтобы правильно структурировать захваченные данные для моего использования при загрузке их в свою собственную базу данных, например:

data1:data2,data3a|data3b|data3c,data4:data5

СначалаВзгляд, достаточно регистров vim, чтобы начать, добавить, а затем заменить и сбросить (перезаписать) регистры перед следующим циклом - и затем повторить.Но в будущем я, возможно, захочу расширить этот сбор данных, который может максимально использовать мои регистры (az, 0-9) и затруднить отслеживание того, что к чему (считая разделителей).Итак, я рассматриваю функции для передачи захваченного текста вместе с именем для его вызова (в обход идеи замены / подсовпадения), чтобы установить (разрешить) для поиска и правильного форматирования в конце каждого цикла.Я вижу такую ​​функцию:

function SetVar(varname, varval)
    exe "let @".a:varname." = '".a:varval."'"
  endfunction

Я бы собирал данные как:

:/sectionHeader/sectionFooter/g/(pieceOfInfo)/call SetVar('varname1',@)/

, где sectionHeader и sectionFooter определяют циклическую часть (диапазон) в документе.Я бы, вероятно, использовал бы RegExps для захвата этих имен разделов и использовал бы часть имени для обозначения переменной (вместо varname1) - или, возможно, инкрементную переменную, такую ​​как «i».

, а затем отформатируйте окончательный вывод следующим образом:

varname1:varname2,varname3|varname4|varname5,varname6:varname7 

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

Вопросы:

  1. Имеет ли это смысл и целесообразно ли в качестве архитектурного подхода к этому решению?

  2. Можете ли вы предложить лучший подход?

1 Ответ

2 голосов
/ 02 декабря 2011

Не лучше ли для этого сценарий awk? Вы можете выполнять поиск и замену такого же типа и иметь отдельный выходной файл, и построчная операция awk должна избежать некоторых проблем, с которыми вы можете столкнуться при попытке сделать это в Vim.

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

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