Vim: görsel modda metin bloklarını seçmenin daha hızlı yolu


190

Vim'i oldukça uzun süredir kullanıyorum ve görsel modda metin blokları seçmenin SHIFT+ kadar basit olduğunun Vve ok tuşunu, metin bloğunun sonuna ulaşana kadar satır satır yukarı veya aşağı hareket ettirmenin farkındayım. seçili.

Benim sorum - görsel modda bir metin bloğu seçmek için daha hızlı bir yol var mı, örneğin seçimin durmasını istediğim satır numarasını belirterek SHIFT+ V? ( :35örneğin, 35 kadar seçmek istediğim satır numarası - bu açıkça işe yaramıyor, bu yüzden sorum buna benzer bir şeyin nasıl yapılabileceğini bulmaktır ...)


3
+1 Kendimi sık sık böyle bir şey yaparken bulduğum için iyi bir soru. Belki de bu kullanarak v%veya v/patternbaşka bir şey kullanmaya başlamak değil mi merak ediyorum ?
user786653

9
vip iç paragrafı seçin.
SergioAraujo

27
V35Ggörsel olarak, aynı zamanda, hat 35, mevcut hattından seçecektir V10jveya V10kgörsel olarak önceki ya da sonraki 10 satır seçecektir
Stephan

1
@Stephan, tam da aradığım şey buydu. Teşekkürler!!
shriek

hat seçme Ben kullanım kısayol için: nnoremap <Space> V. Görsel çizgi modundayken seçimi tanımlamak için fare ile sağ tıklayın (en azından linux'da öyle). Her neyse, sadece klavyeden daha etkilidir.
Mikhail V

Yanıtlar:


212

Diğerlerinin söylediklerine ek olarak, desen aramalarını kullanarak seçiminizi de genişletebilirsiniz.

Örneğin, v/foogeçerli konumunuzdan bir sonraki "foo" örneğine kadar seçim yapar. Örneğin, 35. satırdaki bir sonraki "foo" örneğine genişletmek istiyorsanız , nseçimi bir sonraki örneğe genişletmek için düğmesine basmanız yeterlidir.

Güncelleme

Sık sık yapmıyorum, ancak bazı insanların görsel seçimler yapmak için işaretleri yaygın olarak kullandığını biliyorum. Örneğin, 5. satıra gidersem ve 35. çizgiyi seçmek istersem, 5. satıra maişaret akoymak, sonra :3535. satıra geçmek için tuşuna basabilirim . Shift+ Yeni vgörsel moda girmek için ve son `aolarak işaretlemek için geri seçmek için a.


21
Kullanmanız gereken deseni eklemeniz gerekiyorsa v/foo/e. eEşleşti desen "sonuna" anlamına gelir.
Peter Rincker

6
Ve bu satırdan ofsetlerle değiştirebilirsiniz: V / foo / + 5 veya V / foo / -5 (Yazar gibi yeni görsel mod kullanıyorum).
bheeshmar

Aramanızla eşleşen metin aralığını seçmek isterseniz ne yapardınız; yani: arama teriminizi bulup (tüm kelimeyi) seçer misiniz?
Daniel Park

5
@DanielPark Geçerli kelimeyi seçmek için tuşunu kullanın v i w. Geçerli bitişik boşluk olmayan alanı seçmek istiyorsanız v i Shift+ kullanın w. Fark, caret burada MyCla|ss.Methodolduğunda, ilk combo MyClassve ikinci her şeyi seçecekti.
Jay

1
Teşekkürler. Ayrıca kullanarak v i w setkili bir "yerine" işlemi yapmanızı sağlar bulundu .
Daniel Park

113
G                       Goto line [count], default last line, on the first
                        non-blank character linewise.  If 'startofline' not
                        set, keep the same column.
                        G is a one of jump-motions.

V35G ne istediğinizi başarıyor


89

Vim bir dildir. Vim'i gerçekten anlamak için dili bilmelisin. Birçok komut fiildir ve vim'de nesneler ve edatlar da vardır.

V100G
V100gg

Bu, "100 satırına kadar ve 100 satırını içeren geçerli satırı seç" anlamına gelir.

Metin nesneleri çok fazla gücün olduğu yerlerdir. Edatlarla daha fazla nesne tanıtırlar.

Vap

Bu, "geçerli paragrafın etrafında seç" anlamına gelir, yani geçerli paragrafı ve ardından gelen boş satırı seçer.

V2ap

Bu, "geçerli paragrafın ve sonraki paragrafın çevresini seç" anlamına gelir.

}V-2ap

Bu, "geçerli paragrafın sonuna git ve ardından görsel olarak ve bir önceki paragrafı seç" anlamına gelir.

Vim'i bir dil olarak anlamak, ondan en iyi kilometreyi almanıza yardımcı olacaktır.

Aşağı seçtikten sonra, diğer komutlarla birleştirebilirsiniz:

Vapd

Yukarıdaki komutla, bir paragrafın etrafını seçebilir ve silebilirsiniz. Change da ykopyalamak veya hiç cdeğişiklik ya da aracılara püzerine yapıştırmak için.

Tüm bu komutların birlikte nasıl çalıştığını anladıktan sonra, sonunda görsel olarak bir şey seçmeniz gerekmeyecek. Bir paragrafı görsel olarak seçmek ve sonra silmek yerine, paragrafı dapkomutla silebilirsiniz .


} V-2ap -2 kullanımı gerçekten akıllıdır.
Ambareesh

40

v35G imleçten 35. satıra kadar her şeyi seçecektir.

vsizi seçim moduna getirir, gitmek 35istediğiniz satır numarasını belirtir G.

Bir v}sonraki paragrafın başına kadar olan her şeyi seçecek olanı da kullanabilirsiniz .



9

Shift+V n j veya Shift+V n k

Bu, geçerli satırı ve sonraki / önceki nsatırları seçer . Çok faydalı buluyorum.


Bu aradığım basit bir yol. Teşekkürler
Arsal


6

v%

tüm bloğu seçecektir.

Ayrıca oyna:

v}, vp, vsVb

Yardıma bakın:

:help text-objects

Harfleri, kelimeleri, cümleleri, paragrafları, blokları vb. seçmenin farklı yollarını listeler.



4

İmlecinizin o anda bulunduğu köşeli parantez içine alınmış vi}bloğu seçmek için tuşuna basabilirsiniz {}.

Bu bloğun içinde nerede olduğunuz önemli değil (sadece en dışta olduğunuzdan emin olun). Ayrıca veya {gibi bir çifti olan herhangi bir şeye değiştirebilirsiniz .)]


3

İşlemleri tekrarlamak için her zaman önceki sayıları kullanabilirsiniz:

  • Görsel modda, yazın 35 ve imleç sonraki 35 satırı seçerek 35 kez aşağı iner
  • Normal modda:
    • 35 satırı sil 35dd
    • 35 kez yapıştır 35p
    • 35 değişikliği geri al 35u
    • vb.

3

basit sadece basın Shift v line number gg

örnek: şu anki satıra 41. satır Shift v 41 gg


1

} imleci bir sonraki paragrafa taşıma anlamına gelir. v}tüm paragrafı seçmek için düğmelerini kullanın .


0

Tümünü görsel olarak seçmek için: Normal modda olduğundan emin olmak için Esc yazın

:0 

Dosyanın başına gitmek için ENTER yazın

vG

Sen kullanabilirsiniz ggaynı zamanda ilk satıra gitmek için normal modda.
huangzonghao

0

Bilmek kullanışlı olabilir:

Örneğin aynı miktarda hat seçmek için , blok halinde veya çizgi 1v şeklinde kullanabilmek için bazı değişiklikler yapmış olmanız gerekir 1v.

Bugün bu muhteşem ipucunu buradan gördüm :

 :5mark < | 10mark > | normal gvV
 :5mark < | 10mark > | normal gv

Ayrıca görsel blok sınırlarını sıfırlayabilirsiniz:

m< .......... sets the visual mode start point
m> .......... sets the visual mode end point

0

Girinti modunda katlama ile kullanın:

v Görsel modu blokta herhangi bir yerde aç

zaza iki kez toogle

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.