Szarpanie i wklejanie podczas zwiększania


14

Edytuję plik .sql w Vimie:

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

To, co chcę zrobić, to wyrwać (1, 1),linię i wkleić ją 137 razy; chcę jednak, aby za każdym razem zwiększać drugi numer w nawiasie. Dane wyjściowe wyglądałyby następująco:

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

Czy jest na to sposób w Vimie, a jeśli tak, jakiego polecenia użyłbym?

Dzięki!

Odpowiedzi:


11

Umieść kursor na (1, 1),linii, a następnie wpisz:

qaVypt)<C-a>q135@a

Objaśnienie:

qarozpoczyna rejestrację makra w rejestrze a (możesz wybrać inną literę).

Vyp powiela bieżącą linię, wybierając całą linię (V), kopiując ją (y), a następnie wklejając poniżej (p).

t) przesuń kursor tuż przed następnym zamkniętym nawiasiem, aby znalazł się na drugim numerze.

<C-a>( Ctrli a) zwiększa liczbę.

q kończy nagrywanie makra.

135@aodtworzy makra przechowywane w rejestrze a 135 razy.

Edycja: Peter Rincker ma krótsze polecenie:

qqYpW<c-a>q135@q

Różnice są następujące:

używa rejestru q do przechowywania makra (szybsze pisanie qqniż qaponieważ jest to ten sam klawisz),
kopiuje linię tylko jednym naciśnięciem klawisza Y(zamiast dwóch Vy)
i przesuwa kursor do drugiej cyfry tylko jednym naciśnięciem klawisza W(zamiast tego z t)).


4
Vim golfowe: qqyypW<c-a>q135@q. Nawet krótszy, jeśli używasz Yzamiast yy.
Peter Rincker,

10

Najnowsze Vimowie dowiedzieli się o zwiększaniu wizualnie wybranych regionów, a także o tworzeniu sekwencji. Możesz to zrobić po wklejeniu linii 137 razy:

1) Wybierz blok wizualnie ( Ctrl-V) drugi 1, zaczynając od linii 3.

2) naciśnij gCtrl-A

Nagrałem tutaj obsadę ekranu

Oświadczenie: To wymaga Vima 7.4.900 lub mniej więcej.


Pomyślnie przetestowany w Vim 7.4.826 na Debian / sid.
Dubu,

Twój screencast zniknął, ale ta metoda jest NIESAMOWITA! Dzięki.
david_nash

2

Łatwy do zrozumienia / łatwy do zapamiętania / łatwy do dostosowania do innych sytuacji sposób: skorzystaj z wtyczki VisIncr (jeśli wolisz używać wersji, która naprawdę dobrze gra z menedżerami pakietów z tego stulecia, zamiast zajmować się vimballs , możesz go pobrać z GitHub ). Z tym:

  • idź do (1, 1),linii i pociągnij ją:Vy
  • wklej 136 razy: 136p
  • przejdź do drugiej kolumny 1i zaznacz ją pionowo:C-vGf)h
  • uruchom przyrost: :II
  • przeczytać instrukcję, aby dowiedzieć się o innych smakołyków: :help visincr.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.