Янки та вставлення під час нарощування


14

Я редагую .sql файл у Vim:

INSERT INTO apps_forms (app_id, form_id) VALUES
(1, 1),

Що я хочу зробити, це зірвати (1, 1),лінію та вставити її 137 разів; проте я хочу, щоб друге число в дужках щоразу збільшувалося. Вихід виглядатиме так:

INSERT INTO apps_forms (app_id, form_id) VALUES
(1, 1),
(1, 2),
(1, 3),
...
(1, 137),

Чи є спосіб це зробити у Vim, і якщо так, то яку команду я використовував би?

Дякую!

Відповіді:


11

Помістіть курсор на (1, 1),рядок і введіть:

qaVypt)<C-a>q135@a

Пояснення:

qaпочинається запис макросу всередині регістра a (ви можете вибрати іншу букву).

Vyp дублює поточний рядок, вибравши весь рядок (V), скопіювавши його (y), а потім вставивши його внизу (p).

t) перемістіть курсор перед наступною закритою дужкою, щоб він знаходився на другому номері.

<C-a>( Ctrlі a) збільшує число.

q завершує запис макросу.

135@aвідтворює макрос збережений в регістрі через 135 раз.

Редагувати: Пітер Рінкер має більш коротку команду:

qqYpW<c-a>q135@q

Відмінності:

він використовує регістр q для зберігання макросу (швидше вводити, qqніж qaтому, що це той самий ключ),
він копіює рядок лише одним натисканням клавіші Y(замість двох Vy)
і переміщує курсор на друге число лише одним натисканням клавіші W(замість цього з t)).


4
Вім гольф: qqyypW<c-a>q135@q. Ще коротше, якщо ви використовуєте Yзамість yy.
Пітер Рінкер

10

Останні Vims дізналися про збільшення візуально вибраних регіонів, а також про створення послідовності. Тож ви можете це зробити, вставивши лінію 137 разів:

1) візуально виберіть блок ( Ctrl-V) другий 1, починаючи з рядка 3.

2) натиснути gCtrl-A

Я записав сюди акторський склад

Відмова від відповідальності: для цього потрібен Vim 7.4.900 або близько того.


Успішно перевірено у Vim 7.4.826 на Debian / sid.
Дубу

Ваш скріншот зник, але цей метод ДУЖЕ! Дякую.
david_nash

2

Легкий для розуміння / легкий для запам'ятовування / легкий пристосування до інших ситуацій, як це зробити: використовуйте плагін VisIncr (якщо ви хочете скористатися версією, яка насправді прекрасно справляється з менеджерами пакунків цього століття на відміну від спілкування з vimballs , ви можете отримати його від GitHub ). З цим:

  • перейдіть до (1, 1),рядка і потягніть його:Vy
  • вставити 136 разів: 136p
  • перейдіть до другого стовпця 1та позначайте його вертикально:C-vGf)h
  • запустити приріст: :II
  • прочитати інструкцію , щоб дізнатися про інші смакоти: :help visincr.

1

Я б зіграв g^a.

Спробуйте 137i0^v137kg^a.


1
Ласкаво просимо до Vi та Vim ! Я відформатував вашу відповідь за допомогою розмітки. Було б навіть краще, якщо ви редагуєте, щоб пояснити, як це відповідає на питання ОП.
D. Ben Knoble
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.