Komut satırı modunda göreli satır numaralarını nasıl kullanırım?


16

Son zamanlarda Pratik Vim'den imleci geçerli konumdan hareket ettirmeden satır bloğunu kopyalamanın veya taşımanın bir yolunu öğrendim . Bu komut satırı modunda yapılır. Örneğin

:123,133m.  # moves lines from 123 to 133 below the cursor position.

Beğenirken, özellikle dosya çok fazla satır olduğunda uzun satır numaralarını yazmak bir acıdır.

Zaman zaman, hareket eden çizgiler imlecin nispeten yakındır (ama imlecimi hareket ettirmek istemiyorum, çekiyorum, bulunduğum yere geri dön, yapıştır!). Normal modda yaptığımız gibi göreceli sayıları kullanabilsem harika olurdu. Demek gibi

geçerli satırın 10 satır üstündeki 5 satırı buraya taşı

Kısacası, komut satırı modunda göreli sayılar nasıl kullanılır (normal moda benzer)?

Yanıtlar:


23

Satırlarınızın geçerli satırın 15 ila 10 satırından fazla olduğunu varsayarsak, göreli satır numaralarını kullanarak istediğinizi elde edebilirsiniz:

:-10,-15m.

Ne yazık ki geriye doğru bir aralık belirlerken, Vim gerçekten istediğiniz şey olup olmadığını onaylamanızı ister. Onay adımından kaçınmak silentiçin komutunuzdan önce yazabilir veya yalnızca bir ileriye doğru aralık belirtebilirsiniz:

:-15,-10m.

Beklediğiniz +gibi mevcut satırın altındaki satırlara atıfta bulunmak için kullanılabilir.

Ayrıntılı yardım için:

:help cmdline-ranges

1
Ama bu özelliği hiç kullanmadım. Ben yaparım 15k d5j 10j P.
joeytwiddle

Aradaki fark, 15k, 5j komut modunda çalışır ve yanıtta açıklananın ekleme modunda olmasıdır. Böylece moda göre uygun olanı seçebiliriz. Ekleme modundaki komutlar genellikle diğer komutları çalıştırmak için seçim ölçütleridir.
Soundararajan

12

Aralığınızdaki sabit sayıları kullanabilirsiniz:

:200,300command

Veya göreli sayılar:

:-27,+46command

Veya manuel işaretler:

:'a,'bcommand

Veya otomatik işaretler:

:'[,'>command

Veya arar:

:?foo?,/bar/command

Veya satır kısayolları:

:.,$command

Veya yukarıdaki hilelerin herhangi bir kombinasyonu:

:?foo?,+46command
:'a,$command
...

3

Göreli adreslemeyi (örn. .-10,.+3) Herhangi bir Ex komutuyla kullanabilirsiniz, cp. :help :range.

Alternatif olarak, LineJuggler eklentime bir göz atın ; satırları hareket ettirmek veya çoğaltmak için birkaç kısa eşleme sağlar ve tüm bu eşlemeler göreli bir satır ofseti alır [count].

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.