Как добавить кавычки между словами в список в vim? - PullRequest
0 голосов
/ 01 июня 2018

У меня есть следующий список:

[torunn,sentry,moonstone,avispa,phil coulson]

Возможно ли изменить его на Vim?:

["torunn","sentry","moonstone","avispa","phil coulson"]

Ответы [ 3 ]

0 голосов
/ 01 июня 2018

Команда Substitute Ex - хороший инструмент для манипулирования CSV-линиями

Я часто манипулирую CSV-файлами, используя команду Ex.значения в вашем наборе через диапазон символов:

[ a-zA-Z]

-> аналогично \w, но в вашем наборе нет _0-9 и нам нужны пробелы.

Я помещаю это в группу символов, используя экранированные скобки.

Кроме того, поскольку у нас может быть запятая или конечная скобка, я создаю другую группу символов и разрешаю любой символ с помощью оператора чередования:

\(,\|\]\)

Проверка соответствия нашего шаблона здесь:
enter image description here

Эти группы символов затем упоминаются в строке замены (и включите цитаты).

Собрав все вместе, вот команда подстановки:

:s/\([ a-zA-Z]\+\)\(,\|\]\)/"\1"\2/g

До:

enter image description here

После:

enter image description here


Менее сложное решение

Как указала @bimlas, менее сложное решение будет выглядеть следующим образом:

:s/[^,]\+/"\0"/g

\0 простоссылка на весь подобранный шаблон (см. :help \0).

0 голосов
/ 01 июня 2018

Вы можете использовать подстановку:

s/\v(\w|\s)+/"&"/g

Это будет соответствовать одному или нескольким (+) вхождениям слова \w или пробела \s символа.Строка замены "&" соответствует шаблону &, заключенному в кавычки.Символ & описан в :help s/\&

0 голосов
/ 01 июня 2018

С помощью vim -round и макроса это легко:

Я предполагаю, что курсор находится на первой букве (в данном случае "t"): qqys/\v,|]<cr>"nlq99@q

Давайте разберем его шаг за шагом:

qqys/\v,|]<cr>"nlq99@q
qq               q       # record a macro in the q register
  ys                     # surround something with something
    /\v,|]<cr>           # search for comma or closing bracket
              "          # surround until there with double-quotes
               n         # jump to the next match
                l        # go one to the right
                  99@q   # run the macro 99 times (will stop at first failure)

Поисковый запрос \v,|] просто включает v режим любой магии, а затем сопоставляет запятую или (|) закрывающая скобка.Нам не нужно выходить за скобки, потому что мы их не открывали.

...