Как заменить столбец uuid словом в vim - PullRequest
2 голосов
/ 12 января 2012

Текст, который я получил в виде следующих строк (это скрипт SQL)

('63d3a510-321c-11e1-9fe7-000c2956598e', 1, 13, 'aaa', 'aa', 1309, 0),
('63d3a5ba-321c-11e1-9fe7-000c2956598e', 3, 34, 'bbb', 'bb', 3402, 1),
('63d3a6aa-321c-11e1-9fe7-000c2956598e', 3, 34, 'ccc', 'cc', 3403, 1),

Мне нужно заменить все uuids на uuid ().

Как я могу сделать это в VIM?

Ответы [ 4 ]

4 голосов
/ 12 января 2012

Безопаснее точно сопоставить uuid:

:%s/'[-[:xdigit:]]\{36}'/uuid()/g
4 голосов
/ 12 января 2012

Если все ваши линии имеют одинаковую форму, это будет делать:

:%s,'[^']\+',uuid(),

в командном режиме.

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

1 голос
/ 13 января 2012

[простой способ] В этом конкретном случае (столбцы выровнены) я бы использовал режим визуального блока:

  1. (выберите область между '') x
  2. (выберите столбец со вторым кавычка ') Iuuid ()

где « (select) I» позволяет вставлять один и тот же текст в каждую выбранную строку.

1 голос
/ 12 января 2012

Если бы их было несколько строк, я бы использовал ., чтобы повторить последнее изменение.

lca'uuid()<ESC>j.j.

Пояснение:

l          # One position right to set cursor inside '...'
ca'        # Change content between '...'
uuid()     # Write literal string.
<ESC>      # Press <ESC> key to exit insert mode and return to normal mode.
j.         # Move one line down and repeat last change.
j.         # Move to last line and repeat last change.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...