2010-10-21 15 views
7

Bazen bir sıra numarasına göre farklılık gösteren bir dosyaya bazı benzer satırları eklemem gerekir. Örneğin,Vim'de benzer satırları eklerken tuş vuruşlarını nasıl en aza indirebilirim?

print "func 1"; 
print "func 2"; 
print "func 3"; 
print "func 4"; 
print "func 5"; 

vim kullanarak, kopya [yypppp] kullanılarak birinci hat yapıştırma ve daha sonra, son dört satır değişen son. Eklemek için daha fazla satırınız varsa, bu gerçekten yavaştır.

Bunu vim içinde yapmak için daha hızlı bir yol var mı?


Bunun bir örneği aşağıda verilmiştir:

başlangıç ​​durumu

boot(); 
format(); 
parse(); 
compare(); 
results(); 
clean(); 

son durum

print "func 1"; 
format(); 
print "func 2"; 
parse(); 
print "func 3"; 
compare(); 
print "func 4"; 
results(); 
print "func 5"; 
clean(); 

cevap

12

Makro kaydet. İşte özel örneğiniz için iş akışı:

İlk satırı kopyala yapıştırın. Ardından,

qa  : Start recording macro to register a 
yy  : Yank current line 
p  : Paste current line in line below 
/\d  : Search for start of number (you can skip this command, the next command automagically moves the cursor to the number) 
C-A  : Control-A increments the number 
q  : Stop recording macro 
[email protected]  : Replay macro 3 times 

Sen artırılır sayılarla yeni print hatları üreten tutmak için herhangi bir sayı ile 3 değiştirebilir.

ikinci Örneğin, sadece komutları ve print 's hatları alternatif olsun, yy komutundan sonra

j  : Moves one line down 

ekleyebilir.

+3

Aslında yapmanıza gerek yok '/ [0-9] \ +', VIM İmleci – Hasturkun

+0

@ Hasturkun numarasına otomatik olarak taşır: Whoa, bu oldukça havalı. – Chetan

+0

'/ [0-9] \ +' yi çok daha iyi bir '/ \ d ile değiştirebilirsiniz (bütün sayıyı bir eşleşmeye almanıza gerek yoktur, yalnızca imleci bir sayıya yerleştirmeniz yeterlidir, bu nedenle \\ + 'burada bir overkill' '' '' '' '' '' '' 'd'' bir kısa yol' '[0-9]' '. Daha hızlıdır, ancak bu burada önemli değildir. Aynı zamanda basılması gereken anahtarların sayısını en aza indirir.). – ZyX

1

Bunu yapan eklentileriniz var. Örneğin, visincr. Sayı sütununuzu görsel olarak seçin ve :I'u çalıştırın.

Bunu yapmanın başka bir yolu, bir makroyu kaydetmektir. yapıştırmak için, bir satır aşağı gitmek, imlecin altındaki viwpj kelimeyi yank x, yiw kayıt makro kaydetmeye başlamak için qx çalıştırın CTRLA Kaydı durdurmak için yeni bir numara, q olarak artırmak ve için x kayıtlarının içeriğini tekrarlamak için @x.

0

Bu özel durum için bir makro kullanabilirsiniz. this post'da sıra numaralarının nasıl yapılacağına dair iyi bir yazma var.

İlk önce tüm satırı yazmak ve sonra satırı kopyalayan ve sayacı güncelleştiren bir makroyu kaydetmek için yazıdaki örneği değiştirmeniz gerekir.

İlgili konular