İmleci hareket ettirmeden bir arama terimini vurgulama


15

Vim kullanarak, bazen kendimi bir süre kaynak kodunun bir bölümüne bakarken buluyorum ve aniden ekranda bazı değişkenlerin çıkmasını istiyorum. Bu kolay: /<var>hepsini vurgulayan. Benim sorunum daha sık arama aynı pencereden kaynak koduna bakmıyorum böylece benim pencere kaydırır. Sadece birkaç satır kaymış olsa bile, işler beni nereye götürdüğünü anlamak için birkaç saniye ayırmam gerektiğinden beni hala etkiliyor.

İmleci bir sonraki eşleşmeye götürmeden bir arama terimini vurgulamak mümkün müdür?


2
Tam olarak bir cevap değil, ama daha önce bulunduğum yere atlamak için sadece iki backtick (``) kullanıyorum.
Izkata

Yanıtlar:


1

http://vim.wikia.com/wiki/VimTip1572

Bu eklentiyi kullandıysanız, işlevselliği kolayca etkinleştirebilirsiniz.

\ m

ardından imlecinizi hareket ettirmeden her yere bir kelime atamak için NumPad tuşunu kullanın.

1

Birçok farklı kelime için aynı anda birçok farklı vurguyu veya isterseniz daha karmaşık arama düzenlerini kullanabilirsiniz.


Bu eklentiyi seviyorum!
Andrew Wood

15

skyblue'nun cevabı , istediğinizi gerçekleştirmek için normal arama vurgulamasının nasıl kullanılacağı fikrinin özünü gösterir.

Bu tekniği *komuta benzer şekilde çalışan , ancak bir sonraki maça geçmeden bir tuş takımı yaparak genişlettim .

Teşekkür ederim garyjohn 'a kelime seçimine expand()eşdeğer olduğuna dikkat çektiği için *( *kendini kullanmaktan kaçınmak ve görünümü geri yüklemek için). Bu, kodu doğrudan eşlemeye gidebilmesi için yeterince basitleştirir (bir işlev kullanarak yok eder). Ayrıca kısmi kelimelerle eşleşen bir eşleme ekledim (gibi g*).

:" The leader defaults to backslash, so (by default) this
:" maps \* and \g* (see :help Leader).
:" These work like * and g*, but do not move the cursor and always set hls.
:map <Leader>* :let @/ = '\<'.expand('<cword>').'\>'\|set hlsearch<C-M>
:map <Leader>g* :let @/ = expand('<cword>')\|set hlsearch<C-M>

1
Winsaveview (), winrestview () ve ile normal *değiştirilmesini önleyebilirsiniz . let @/ = @/let @/ = expand("<cword>")
garyjohn

@garyjohn: Evet, bu daha iyi. Tarafından yapılan "kelime" seçimine eşdeğer bir şey olduğundan emin değildim *, ama <cword>öyle.
Chris Johnsen

13

Arama kaydını eşleştirmek istediğiniz değişkene de ayarlayabilirsiniz.

İlk olarak, arama vurgulamanın açık olduğundan emin olun:

:set hlsearch

Ardından, arama kaydını aşağıdakilerle ayarlayabilirsiniz:

:let @/="variable"

Bu, bir sonraki eşleşmeye geçmeden değişkenin tüm oluşumlarını vurgulayacaktır.

Daha fazla bilgi için bakınız :help @/


7

Bunun bir yolu :matchkomutu kullanmaktır , örn.

:match Question '^R^W'

Bu, Soru vurgulama grubunu kullanarak imlecin altındaki sözcüğü vurgulayacaktır. Sık sık Soru grubunu kullanıyorum çünkü terminalimde hoş bir yeşil. Kullanılabilir vurgulama gruplarını görmek için

:hi

^RVe ^Wsırasıyla, Ctrl-R ve Ctrl W ve imlecin altında kelime ile değiştirilir. Görmek

:help c_CTRL-R_CTRL-W

daha fazlası için. Görmek

:help :match

:matchkomut hakkında daha fazla bilgi için . Bu vurgulamayı temizlemek için,

:match

argüman olmadan.


1

Ek olarak:

 :set hlsearch

Şunları yapmak isteyebilirsiniz:

 : set noincsearch

0

Benzer * var:

[I ............................. it show where the word under the cursor appears

Bir göz atmaya değer :h [I. orada ihtiyaçlarınızla ilgili bazı ilginç şeyler buluyoruz.

Cevabımı koyduğum stackoverflow'da benzer bir soru var (biraz daha tamamlandı)

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.