Vim: Birden fazla satırın sonuna bir metin bloğu nasıl yapıştırılır?


32

Diyelim ki böyle bir metin bloğum var:

// Yorum1
// Yorum2
// Yorum3

Ve bu satırların her birini karşılık gelen 3 kod satırının sonuna eklemek istiyorum:

foo = 1;
bar = 2;
baz = 3;

Böylece sonuç

foo = 1; // Yorum1
bar = 2; // Yorum2
baz = 3; // Yorum3

Bunu Vim'de yapmanın kolay bir yolu var mı?


@ Flimzy, ne yazık ki hayır. Zaman zaman sizinki gibi yorumlar Vim sorularında görünüyor, ancak şunu kontrol edin: meta.stackexchange.com/q/25925/160504
sidyll

Bu soru için daha iyi topluluk ise vi.stackexchange.com
thinwybk

Yanıtlar:


36

Bir satır kümesi seçmek için görsel blok modunu ( Ctrl+ v) kullanın, ardından ya yda donlardan birini seçin .

Daha sonra foo, bar, baz çizgilerini seçtiyseniz, yorum satırlarının ilk sütununu seçmek için tekrar görsel blok modunu kullanın ve ardından onları yerinde Shift+ işaretleyin p(veya yorum satırlarını seçtiyseniz, foo bar baz'ın son sütununu seçin. çizgiler ve pyerine yerleştirin.

Konumlandırmanın askıya alınması biraz pratik gerektirebilir, ancak bu fırsatı yakaladığınızda uçacaksınız. Bir blok seçiliyken, örneğin bloğa boşluk eklemek için Shift+ ' Ayı kullanabilirsiniz (eklerken, yeni metin yalnızca üst satırda görünür, ancak esc tuşuna bastığınızda tüm seçilen satırlarda sihirli bir şekilde görünür) . Benzer şekilde, Shift+ iher satırda seçilen bloğun başında aynı şeyi yapacaktır.

Yine de boş satırları temizlemeniz gerekir.

Bu teknikleri daha ayrıntılı olarak gösteren harika bir vimcast bölümü de var .


1
Bu çözümü :set ve=allçok yönlü olarak buldum . Kişisel olarak UnconditionalPaste eklentisini ( vim.org/scripts/script.php?script_id=3355 ), ihtiyacımı biraz daha iyi karşıladığı için kullanıyorum .
Peter Rincker

1

Kolay ya da değil, bana söyle. Git // Comment 1, ddsilmek için tıkla. Çizginin altına yapıştırmak için çizgiye gidin foo = 1;ve tıklayın p. fooTekrar yukarı gidin Jve satıra katılmak için tuşuna basın. Tada.


0

Aşağıdaki tam olarak tanımladığınız şeyi yapacaktır:

:%s@\(\w\s\+=\s\+\(\d\+\)\)@\=submatch(1) . " // Comment" . submatch(2)@

Gerçekte ne yapmanız gerektiğine bağlı olarak (örneğin aksine), pratikte, "// Yorum1" vs. bloğu seçmek daha kolay olabilir. Block ( Ctrlv), yank ( y), kodun sonuna gidin engelle ve yapıştır.

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.