2010-04-20 17 views
9

Merhaba Gvim'de dosyadaki her yorumdan önce bir veya iki satır eklemem gerekiyor.VIM'deki her yorumdan önce boş bir çizgi nasıl ekleyebilirim (örneğin "#")?

Ör

#comment 1 
#comment 2 
statement 1 
statement 2 
#comment 3 

comamnd çalıştırdıktan sonra o bunu yapmak nasıl

#comment 1 

#comment 2 
statement 1 
statement 2 

#comment 3 

olmalıdır?

Teşekkür

Güncelleme: cevaplar

Fakat yapılan yorumlar sürekli bırakılır, ben aralarında eklenecek satır istemiyoruz

için teşekkürler. Bunu yapmanın bir yolu var mı?

Ben bu komut

#comment 1 

#comment 2 

cevap

20

bir açıklamadır:

Bu, :global/^#/normal O bir kısayol: her hat için

  • '#' ile başlayan (:global/^#/)
  • yapmak 'normal modda' (normal O) 'de 'O' komutu - ki yapmak anlamına gelir Ne 'O' tuşu 'normal' (ekleme ve değil: komut) VIM modunda ne yapar. Ve 'O' yeni bir satır ekler.
+0

(çok 1 hat için çalışır) çünkü en sezgisel, ama belki nasıl ve neden çalıştığını açıklamalısın. – matias

+0

açıklama eklendi –

+0

': g [lobal]' trumps ': s [ubstitute]' +1 sizin için sir –

0

kullanın olmak istemesi yok

#comment 1 
#comment 2 

örn: Burada, :g/^#/norm O

Tamam: Ayrıca bu komutu kullanabilirsiniz :%s/^\ze\s*#/\r/

1

dosyasındaki ilk satırdan önce hiçbir satır olmalıdır gibi örnek çıktısı görünüyor ilk satırı

etkileyen değil. Bunu elde etmek için bir lookbehind kontrol edebilirsiniz. İlk satır Eşleşmeyecek yüzden, mevcut konumda önce bir satır var yalnızca

:%s/^\n\@<=\ze\s*#/\r/

\n\@<= Eşleşmeler. Daha fazla bilgi için, bkz. hat denetimi ile de yapılabilir. Bu, numaralı hat denetimi ile de yapılabilir. Aşağıdaki normal ifade yalnızca ilk satır olmayan satırlarla eşleşir. Hat 1 altında

:%s/^\%>1l\ze\s*#/\r/

\%>1 Eşleşmeler.:h \%>l


Bkz İşte önce hiçbir açıklama satırı varsa yani sadece satırdan önce bir yeni satır eklemek, güncelleştirilmiş soru ile çalışmalıdır şey. Dosyanın başında ondan önce ise

:g/^\%^\@<!\(^\s*#.*\n\)\@<!\s*#/norm O

^\%^\@<! bu satırla aynı vermeyin. :h \%^ ve: h \@<!

\(^\s*#.*\n\)\@<! Yalnızca bir önceki satırdaki ilk boş olmayan karakter # değilse, bu çizgiyle eşleşmelidir.

:

Bu regex yanı "gelişmemiş vi" çalışan bir çözüm, var

 
#comment 1 
#comment 2 
statement 1 
statement 2 
#comment 3 

 
#comment 1 
#comment 2 
statement 1 
statement 2 

#comment 3 
2

değişecektir 2, $ g/^ [ TAB, ilgili kontrol karakteri olarak TAB ve^M girilmelidir.

Umut bu yardımcı olur - ve benim teşekkür 1 hat problemi üzerinde

0

Yine başka bir yol işaretleme için Heikki gitmek Ben bu defa en iyi cevap olduğunu düşünüyorum

:s/^[ TAB]*#-1s/^/\r/ 
İlgili konular