Vim: Metinleri nasıl verimli bir şekilde ararsınız?


30

Ne zaman vim'de metin aramak istediğinizde yazıp /sonra aradığınız dizgiyi yazmalısınız .

Bununla birlikte, dize uzun olduğunda ve bunu birden çok kez yapmak istediğinizde, birden fazla kez yazmak zorunda kalmamanız için bunu yapmanın bir yolu var /andthisreallylongstringmı?


12
Bir Vim Hile Sayfası veya Vim İpuçları'nı kısaca incelemenizi öneririz - vim'den daha fazla yararlanmanın başka yollarını da bulabilirsiniz.
RedGrittyBrick 11:11

Protip: Linux için haftalarca çalışmayı gerektirmeyen metin editörleri vardır.
BlueRaja - Danny Pflughoeft 11:11

4
@BlueRaja: Bunun bir editör savaşı için iyi bir yer olduğundan emin değilim. Ayrıca Windows işletim sistemi savaşları için Windows veya Mac OS için hoş ve kullanıcı dostu metin editörleri de vardır. Bir editörle nasıl verimli olacağınızı çalışmak zorunda kalmanız, sonunda temel özelliklere bağlı kalmaktan çok daha verimli olmanızı sağlayacaktır.
Benoit

Yanıtlar:


61

Bir aramayı tamamladıktan sonra "n" tuşuna basın, önceki eylemi tekrarlayın (arama).


12
Ayrıca, Nönceki sonuca gidecektir.
Jin,

15
Ayrıca, vurduktan sonra yukarı ok vurmak /son arama terimini hatırlayacaktır
bastibe

6
Ayrıca q/, son arama terimlerinin tümünü içeren düzenlenebilir bir pencere gösterecektir.
Zeus amca

7
Ayrıca, /Enter ve Enter tuşuna basmak önceki aramayı tekrar edecektir. Vur ?ve Enter tuşuna basıldığında önceki arama geriye doğru tekrarlanır.
Andy Lester

3
/Ctrl-Fbunun bir alternatifi q/daha kolay bir anımsatıcı olabilir (ctrl-f == find). Q gibi komut modunda da çalışır.
idbrii

34

Aradığınız dize imlecin altındaysa, *ileriye #doğru aramak veya geriye doğru aramak için yazabilirsiniz .


19

Genelde nasıl ararım;

  1. '/' Tuşuna basın
  2. Arama terimini gir
  3. Enter tuşuna basın
  4. Aramada ileri ve geri gitmek için 'n' ve 'N' tuşlarını kullanın.

Vim, aramalarınızın geçmişini tutar, böylece önceki aramalara ihtiyacınız varsa, '/' tuşuna basabilir ve arama geçmişine göz atmak için YUKARI ve AŞAĞI tuşlarını veya <Ctrl-P> <Ctrl-N> tuşlarını kullanabilirsiniz.

Ayrıca kullanabilirsiniz '?' '/' yerine geriye doğru arama yapmak için.

Ben de kullanmayı severim:

set ignorecase smartcase

Şimdi sadece arama dizesinde büyük harf karakterleri varsa, büyük / küçük harf duyarlı bir arama olacaktır.


15

Aramanızı daha verimli hale getirebilecek iki ipucu set hlsearchve set incsearch.

  • set hlsearch, arama sonuçlarınızı vurgulamaktadır. Tip :nohartık ihtiyacınız olmadığı zamanlarda bunları kapatmak için.

  • set incsearch artımlı aramayı açar.

    Çıkarılan :help incsearch

    Bir arama komutu yazarken, şu ana kadar yazıldığı şekliyle, kalıbın nerede eşleştiğini gösterin. Eşleşen dize vurgulanır. Desen geçersizse veya bulunamazsa, hiçbir şey gösterilmez. Ekran sıklıkla güncellenecektir, bu sadece hızlı terminallerde kullanışlıdır.

    Olmadan incsearch, sonuçlarınız yalnızca <CR>arama anahtar kelimenize bastıktan sonra gösterilecektir .

    Örnek:

    Aramak istiyorsun wildignore

    görüntü tanımını buraya girin

    Siz /wildyazdığınızda ilk eşleşme otomatik olarak vurgulanır.

    görüntü tanımını buraya girin

    Sonra yazın ive bir sonraki doğru eşleşmeye gider.

    görüntü tanımını buraya girin


13

Henüz açıklanmayan başka bir ipucu: Karakterlere qve daha sonra tuşuna basılması, /önceki arama terimlerinizin bir listesini verecektir. Bunları bir belgedeki diğer satırlar gibi düzenleyebilir ve ardından yeni bir arama için yeniden kullanmak üzere enter tuşuna basabilirsiniz.


3
Bunu arıyordum. Bu önemli bir not ve konuyla ilgili.
cincodenada

8

/Aramayı başlatmak için bastıktan sonra , arama geçmişinizi kaydırmak için yukarı ok tuşuna basabilirsiniz.

Tüm arama terimini yazmak zorunda kalmamak için normal bir ifade girebilirsiniz: and.*longstring


7

Sadece vurmak / argüman olmadan vurmak sizin için işe yaramaz mı? Tüm sistemlerimizde bu, en son yapılan aramaların tekrarlanmasına neden olur.


6

Yanık metni aramak için izleyebileceğiniz hoş bir desen var . Öyleyse, arama dışında bir araçla gezindiyseniz, kelimeyi kendi içine yazmanız bile gerekmez. Özetle, aramak istediğiniz kelimenin ilk karakterindeyseniz:

v
e
y
/
Ctrl-r
0
Enter

(daha sonra n veya N ile bir sonraki maça devam edin)

Ancak *(veya #) bu komutların hemen hemen hepsinde aynı şeyi gerçekleştirir. Tek fark, belirttiğiniz kelimenin ne kadarı kadar esnek olabilirsiniz (e yerine, kelimenin sonuna kadar, istediğiniz kadar, örneğin 9 l'yi seçebilirsiniz).


1
  • /string - Dize için ileri arama
  • ?string - Dize için geri ara
  • n - Dizenin bir sonraki örneğini ara
  • N - Dizenin önceki örneğini arayın

1

Programlama yaparken çok zaman arayacağım. aVeryLongVariableNameInTheProgram .

Vim'de metni kolayca bir arabellek / kayıt listesine aktarabilir ve sonra onu arayabilirsiniz:

  • İmleci kelimenin ilk karakterine getirin
  • "Byw metin yazmak aVeryLongVariableNameInTheProgramB tamponu içine yapmak için (favori, B kullandım)
  • /^RB (eğik çizgi, Ctrl-R, B) B tamponunu arama satırına yapıştırmak için

Tabii ki tek bir kelime söylemek yerine satırın sonuna kadar vurabilirsiniz - yukarıdaki sekansı her zaman kullanıyorum.


1

Ayrıca, Ctrl+ Rve ardından yazıcının adına, örneğin, / Ctrl+ R0 tuşlarına basarak herhangi bir kaydın içeriğini arama istemine yapıştırabilirsiniz Enter.


Bence sana bir kelime.
dotancohen

0

Girdiğiniz uzun dize değişken bir ad mıdır? Veya metninizde uzun bir dize? Ardından *imlecinizin altındaki sözcüğü / dizgiyi aramak için tuşuna basın.

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.