Yanking ve yapıştırma süre incrementing


14

Vim'de bir .sql dosyasını düzenliyorum:

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

Yapmak istediğim (1, 1),çizgiyi çekip 137 kez yapıştırmak; ancak, parantez içindeki ikinci sayının her seferinde arttırılmasını istiyorum . Çıktı şöyle görünecektir:

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

Bunu Vim'de yapmanın bir yolu var mı, eğer öyleyse hangi komutu kullanmalıyım?

Teşekkürler!

Yanıtlar:


11

İmlecinizi (1, 1),satıra getirin ve şunu yazın:

qaVypt)<C-a>q135@a

Açıklama:

qakaydın içindeki bir makro kaydına başlar a (başka bir harf seçebilirsiniz).

Vyp tüm satırı (V) seçerek, kopyalayarak (y) ve sonra (p) altına yapıştırarak geçerli satırı çoğaltır.

t) imleci bir sonraki kapalı parantezden hemen önce hareket ettirin, böylece ikinci sayı üzerindedir.

<C-a>( Ctrlve a) sayıyı artırır.

q makronun kaydını sonlandırır.

135@aKayıt saklanan makro yeniden çalan bir 135 kez.

Düzenleme: Peter Rincker'ın daha kısa bir komutu var:

qqYpW<c-a>q135@q

Farklılıklar:

o kayıt kullandığı q (yazın daha hızlı makro depolamak için qqdaha qa, aynı anahtar çünkü)
tek bir tuş ile kopyalar çizgi Y(iki yerine Vy),
ve sadece tek bir tuş ile ikinci sayıya imleci hareket Wyerine ( arasında t)).


4
Vim golf: qqyypW<c-a>q135@q. YBunun yerine kullanırsanız daha da kısa yy.
Peter Rincker

10

Son Vims, seçilmiş görsel bölgeleri artırmayı ve bir dizi oluşturmayı öğrendi. Böylece, çizginizi 137 kez yapıştırdıktan sonra yapabilirsiniz:

1) Ctrl-V3. satırdan başlayarak ikinci 1'i görsel olarak blokla seçin ( ).

2) Basın gCtrl-A

Burada ekran görüntüsü aldım

Feragatname: Bunun bir Vim 7.4.900 veya daha fazlasına ihtiyacı vardır.


Debian / sid üzerinde Vim 7.4.826'da başarıyla test edildi.
Dubu

Ekran görüntünüz kayboldu, ancak bu yöntem MÜKEMMEL! Teşekkürler.
david_nash

2

Kullanın: kolay kolay kolay bunu yapmak için diğer durumlar şekilde adapte / hatırlamak / anlamak için VisIncr Bunun yerine bir sürümünü kullanmayı tercih ederseniz uğraşan aksine aslında bu yüzyıl paket yöneticileri ile güzel oynadığını (eklenti vimballs , GitHub'dan alabilirsiniz ). Bununla birlikte:

  • (1, 1),hatta git ve çek:Vy
  • 136 kez yapıştırın: 136p
  • öğesinin ikinci sütununa gidin 1ve dikey olarak işaretleyin:C-vGf)h
  • artışı çalıştırın: :II
  • diğer güzellikler öğrenmek için kılavuzu okuyun: :help visincr.

1

İle oynayacağım g^a.

Deneyin 137i0^v137kg^a.


1
Vi ve Vim'e Hoşgeldiniz ! Cevabınızı markdown kullanarak biçimlendirdim. Eğer verirsen, daha iyi olurdu düzenlemek nasıl bu cevaplar OP soruyu açıklamak için.
D. Ben Knoble
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.