Vim'de köşeli ayraçlar (veya tırnak işaretleri veya…) arasında nasıl seçim yapılır?


220

Eminim bu tür şeyler için bir eklenti vardı, ama şimdi ihtiyacım olduğuna göre, (doğal olarak) bulamıyorum, bu yüzden sadece güzel ve basit soracağım.

Köşeli ayraçlar veya tırnak işaretleri veya genellikle eşleşen karakterlerin bir listesi arasında seçim yapmanın en kolay yolu nedir?

   write ( *, '(a)' ) 'Computed solution coefficients:'

Örneğin, burada (a), veya seçmek istiyorum Computed solution coefficients:.

Çok satırlı ilgilenmiyorum, sadece bir satırda meydana gelen durumlar.

Yanıtlar:


277

Parantezlerin içine girmek istediğiniz gezinme anahtarını kullanın, ardından eşleşen paren içindeki her şeyi kopyalamak için yi(veya yi)düğmelerini kullanabilirsiniz . Bu aynı zamanda köşeli parantezler (örneğin yi]) ve kıvırcık parantezlerle de çalışır . Ayrıca etmek y, ayrıca silebilir veya değiştirme metni (örn ci), di]).

Bunu çift ve tek tırnaklarla denedim ve orada da işe yarıyor gibi görünüyor. Verileriniz için şunu yaparım:

write (*, '(a)') 'Computed solution coefficients:'

İmleci imlecin üzerine getirin C, sonra yazın yi'. İmleci boş bir satıra taşı, vur pve al

Computed solution coefficients:

Gibi CMS kaydetti yanı görsel mod seçimi için bu eserler - sadece kullanım vi), vi}, vi'vb


1
Genellikle önceden tanımlanmış eşleşen grafikler (normalde sadece tek ve çift tırnak ve her türlü parantez) arasında her şeyi seçmek için bir yol arıyorum.
Kale

2
Ayrılmış kelimelerle ne demek istiyorsun? Ben "[x, y, z]" üzerinde denedim ve "x, y, z" seçti
Tim Whitcomb

4
Son yorumu dikkate almayın - sorunun ne olduğunu buldum. Bir cazibe gibi çalışır :-)
Rook

tırnak işaretleri ile çalışmak gibi görünüyor yi"tüm withing tırnak seçin
stefanB

ci(ya ci)da aradığım şey için yapıyor. Teşekkürler. Bu durumda hala tam olarak anlamıyorum i, ama çalıştığı sürece kimin umurunda, değil mi? :)
justnorris

279

Tek tırnaklar arasında seçim yapmak için genellikle vi' ("iç tek tırnakları seç") yaparım .

Parantez bloğunun içinde kullanıyorum vib ("iç bloğu seç")

Kıvırcık parantez bloğunun içinde kullanabilirsiniz viB("büyük B")

Seçimleri "kapsayıcı" yapmak için ( abunun yerine tırnak, parantez veya kaşlı ayraçları da seçin) i.

Kılavuzda veya vim içinde Metin nesnesi seçimleri hakkında daha fazla bilgi edinebilirsiniz :help text-objects.


Bu ipucu için teşekkürler, benzer bir şey araştırıyorum ve soruyorum ve sonuçlarımdan memnun kalmadım. Muhteşem.
alfredodeza

bu ipucu beynimin ve kas hafızamın içine yerleştirmek çok basit ve kolaydır. Teşekkürler.
Ghazaly

Bu oldukça faydalı bir ipucu. Ekstra tuş vuruşlarıyla uğraşmanıza gerek yok. Bağlantı için teşekkürler.
Rai

27

Bu seçim yöntemi yerleşiktir ve Vim yardımında iyi kapsanmıştır. XML etiketlerini ve daha fazlasını kapsar.

Bkz :help text-objects.


1
: metin nesnelerinin faydalı şeylere yaklaşmasına yardımcı olun ... en azından "ve a" gibi (görsel moddayken) bazı yaygın olanlardan bahsedebilirsiniz.
Stobor

2
(Ayrıca, +1 çünkü uzun süredir vim kullanıcısı olmasına rağmen, bunları bilmiyordum!)
Stobor

@Stobor. Şerefe bu referansı düzeltti
michael

21

Tek tırnak içinde seçmek için kullanın vi'.

Parantez içinde seçmek için kullanın vi(.


3
Not: ci'veya ci(görsel olarak seçmek yerine değiştirmek için. Ama tam olarak istediğimi yapıyor. Teşekkürler :)
justnorris

İkincisi sadece o () blok içinde olduğunda çalışır, bu yüzden genellikle yaparım %vi(veya%vib
816-8055

7

hjklBasamaklama ifadelerinden birine ulaşmak için veya tuşlarını kullanın , ardından vgörsel (yani seçerek) modu seçmek için, sonra %diğer köşeli aygıta atlamak için kullanın.


5
(ne yazık ki, tırnak yapmaz ...)
Stobor

3

Yerleşik işlevi kullanarak .vimrc dosyasına bir Vim işlevi yazın searchpair:

searchpair({start}, {middle}, {end} [, {flags} [, {skip}
            [, {stopline} [, {timeout}]]]])
    Search for the match of a nested start-end pair.  This can be
    used to find the "endif" that matches an "if", while other
    if/endif pairs in between are ignored.
    [...]

( http://vimdoc.sourceforge.net/htmldoc/eval.html )


2

En çok oylanan cevaba bir detay eklerdim:

Gvim kullanıyorsanız ve panoya kopyalamak istiyorsanız,

"+<command>

Köşeli ayraçlar (veya parens veya kıvırcık köşeli ayraçlar) arasındaki tüm içeriği kopyalamak için

Örneğin: "+yi}imlecinizin bulunduğu köşeli ayraçlar arasındaki tüm içeriği panoya kopyalar.


2
Bu tamamen probleme diktir ve bir cevap olmamalıdır. Bu konuyu soran her soru üzerine yazabilirsiniz y.
Boru

Bu, cevabın kendisinin değil, cevaba bir ektir.
yuriploc

O zaman bu cevaba bir düzenleme olmalı, bu yazı olduğu gibi soruya cevap vermiyor.
boru

Bu gvim kullanmıyorum için bir reklamdır :) Hayatlarında fazladan iki vardiya + tuşa basmak kim ister?
Paul Parker

1

Bir eklenti yaptım vim-textobj-quotes: https://github.com/beloglazov/vim-textobj-quotes

Herhangi bir türdeki en yakın tırnak çiftleri için metin nesneleri sağlar. Yalnızca iqveya kullanmak aq, imleci çevreleyen, imlecin önünde veya arkasında (bu tercih sırasına göre) tek ('), çift (") veya geri (`) tırnakların içeriği üzerinde çalışmanıza olanak tanır Başka bir deyişle, tekliflere ulaşmak için gerektiğinde ileri veya geri atlar.

Örneklere bakarak anlamak daha kolaydır (imleç ile gösterilir |):

  1. Önce foo '1, |2, 3' bar:; bastıktan sonra diq:foo '|' bar
  2. Önce foo| '1, 2, 3' bar:; bastıktan sonra diq:foo '|' bar
  3. Önce foo '1, 2, 3' |bar:; bastıktan sonra diq:foo '|' bar
  4. Önce foo '1, |2, 3' bar:; bastıktan sonra daq:foo | bar
  5. Önce foo| '1, 2, 3' bar:; bastıktan sonra daq:foo | bar
  6. Önce foo '1, 2, 3' |bar:; bastıktan sonra daq:foo | bar

Yukarıdaki örnekler tek tırnak için verilmiştir, eklenti çift (") ve geri (`) tırnak için aynı şekilde çalışır.

: Ayrıca başka kullanabilirsiniz ciq, diq, yiq, viq, vb

Daha fazla bilgi için lütfen yukarıda bağlantı verilen github sayfasına bakın.


-6

Vim'deki basit bir tuş haritası bu sorunu çözecektir. map viq F ”lvf” hh Yukarıdaki komut viq'u tırnak işaretleri arasında arama yapmak için tuşlarla eşler. 'İ herhangi bir karakterle değiştirin ve tuş haritalarınızı oluşturun. Başlatma sırasında bunu vimrc'ye yapıştırın ve her seferinde kullanabilirsiniz.

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.