SORU
25 Mayıs 2012, Cuma


Vim birleştirme birden fazla satır (iki blok)

Vim çizgiler iki blok birleştirmek istiyorum, yani hatları n..m satır a..b ekledim. Eğer yalancı bir açıklama isterseniz: [a[i] b[i] for i in min(len(a), len(b))]

Örnek:

abc
def
...

123
45
...

haline gelmelidir

abc123
def45

Güzel bir şekilde el ile kopyala&yapıştır yapmadan bunu yapmak için var mı?

CEVAP
25 Mayıs 2012, Cuma


Kesinlikle tek bir kopyala/yapıştır (blok modu seçimi kullanarak) ile tüm bu yapabilirsiniz, ama istediğin bu değil sanırım.

Eğer bu sadece yapmak istiyorsanız Ex komutları

:5,8del | let l=split(@") | 1,4s/$/\=remove(l,0)/

dönüştürecek

work it 
make it 
do it 
makes us 
harder
better
faster
stronger
~

içine

work it harder
make it better
do it faster
makes us stronger
~

GÜNCELLEME:Bu çok upvotes ile bir cevap daha kapsamlı bir açıklamayı hak ediyor.

Vim, çok Eski komutlar zincirine çubuk karakteri (|) kullanabilirsiniz, yukarıdaki eşdeğerdir

:5,8del
:let l=split(@")
:1,4s/$/\=remove(l,0)/

Birçok Eski komutları kabul aralığı hatları gibi bir önek değişkeni - yukarıdaki durumda 5,8 önce del 1,4 önce s/// belirten satır komutları ile çalışır.

del verilen satırları siler. Kayıt bir argüman alabilir, ancak belirli bir zaman normal modda silme gibi isimsiz kaydetmek için hatları, @", döker. let l=split(@") sonra bir liste haline silinmiş satırları böler, varsayılan sınırlayıcı kullanarak: boşluk. Düzgün silinmiş satırlarda boşluk vardı o giriş üzerinde çalışmak gibi

more than 
hour 
our 
never 
ever
after
work is
over
~

farklı bir ayırıcı belirtmek için, "iş" iki liste öğeleri bölünmüş olmaktan: 25**. engellemek lazım

Son olarak, değiştirme s/$/\=remove(l,0)/ her satırın ($) ifadenin değeri ile sonu remove(l,0) değiştirin. remove(l,0) listeyi 30* *ve ilk unsuru, silme dönen değiştirir. Bu bize sırayla onları okuduk silinmiş satırları değiştirmenizi sağlar. remove(l,-1) kullanarak tersten silinmiş satırları koyabiliriz yerine.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:
Vim

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • HTC Tutorials

    HTC Tutorial

    21 EYLÜL 2010
  • TheXiaxue

    TheXiaxue

    3 AĞUSTOS 2009
  • FF Radioo

    FF Radioo

    14 ŞUBAT 2007