Vim'de her ikinci sıraya nasıl katılınır?


28

Çok fazla (~ 1000) çizgiye katılmak isterim, fakat sadece bir sonrakine her garip. Elle yapabilirim

Jj

500 kez ve yaptım. Ancak, bu iki ifadeyi tek bir komutta 500 kez nasıl uygulayabilirim? Yazma

500Jj

Bir sonraki 500 birleşim çizgileri olacak ve daha sonra tek bir satır aşağı hareket ettirilmesi.

Örnek:

Sahibim:

a
b
c
d
e
f
g
h

İstiyorum:

a b
c d
e f
g h

Düzenleme: Haritalamayı denedim:

:map X Jj
500X

ama görünüşe göre haritalama belgelerini tekrar okumalıyım. Çalışmıyor

Yanıtlar:


30

bunu yapardım:

  1. Bir makro 'q' kaydetmeye başlayın: qqJjq

  2. 'q' makrosunu 500 kez tekrarla: 500@q

(aslında 'q' adında bir makro değildir, 'q' adında bir dosyadır. Bu kaydı 1'de olduğu gibi etkileşimli olarak doldurmak yerine, aynı zamanda 2 de :let @q = "Jj"yapabilirsiniz.)


Harika, makroları bana hatırladığın için teşekkürler!
Boldewyn

:% normal J çok hızlı ve kolaydı (aşağıdaki 2. en üstteki çözüme bakın) ... 50.000'den fazla hat üzerinde çalışan bu makro çözüme kıyasla
ihightower

@hightower bu yüzden bu cevabı da geri aldım. 6 yıl önce :)
akira

@akira senin makro sadece bugün sadece bu makro çözümü farklı bir amaç için gerekli olarak benim gün kurtardı.
ihightower

24

Bunu dosyanın her satırında yapmak için:

:%normal J

veya daha kısa:

:%norm J

Bunu dosyanın sadece bir kısmında yapmak için, satırları seçin Vveya başka bir yolla aralık alın:

:'<,'>global/^/normal J

veya daha kısa:

:'<,'>g/^/norm J

Kevin, sadece bir dosya değil, her dosyada iki komut çalıştırmak istiyor.
JNK,

1
:gOP ihtiyacının cevaplarının kullanılması .
Luc Hermitte

2
Bu gerçekten her ikinci çizgiye katılacak. Dene!
Kevin Panko

Numara için teşekkürler global. Ancak benim durumumda makroyu kaydetmek daha kolay ve hızlıydı.
Boldewyn

2
Sadece bir tahmin - her satırdaki komutu sırayla uygular ve ilk satırı yaptıktan sonra, ikinci satır şimdi gider (ilk satıra katıldı), bu nedenle üçüncü satıra geçmeye zorlanır.
Kevin Panko

9

Peki buna ne dersin:

:g/$/j  

veya

:g/$/j!  

ve her üç satırda bir gruplandırın

:g/$/j3 

1
Bu çok güzel bir çözüm Miro. Daha da iyisi, bunu standart vi'de de kullanabilmeniz daha iyidir, garip olsa da, takip numarası jR4.0 vi (Solaris'te olduğu gibi) kullandığınızda j3 yerine 3 sütun yapmak yerine 4 sütun yapın (4 kullanmanız gerekir). j2 orada her 3 satırda bir grup oluşturmak için)
JohnGH


-1

Ben Vim kullanıcısı değilim, ancak çevrimiçi dokümanlardaki gibi görünüyor

500(Jj) 

Parantez içindeki şeyleri bir birim olarak ayrıştırdığı için işe yarayabilir.


Hm, denediğin için teşekkürler, ama Vim versiyonumda parantezleri görmezden gel. Bana bu sözdizimini bulduğun linki söyler misin?
Boldewyn

1
vimdoc.sourceforge.net/htmldoc/syntax.html - Üzgünüm yardımcı olmadı!
JNK,

Aslında bu bağlantıyı kontrol edin: vim.org/scripts/script.php?script_id=2136 bunun peşinde olduğunuzu yapın
JNK
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.