Vim'de “Sonrakini bul”


535

İçin Vim ileri arama yapmak için cakeben yazarsınız, /cakeama geri dönüşü bastığınızda imleç ilk maçında atlar. "Sonrakini bulmaya" benzer bir Vim komutu var mı?


33
Kullanmaya alışın :help. :help /arama hakkında yardım gösterir ve sorunuzun yanıtı sayfanın biraz altında görünür.
Chris Morgan

Yanıtlar:


876

Öyle nBir sonraki için ve Nönceki için.

Ve bunun yerine ( ?örneğin ?cake) ile ters arama kullanırsanız , bunun tersi de geçerlidir /.

Sisteminize yüklenmişse, vimtutorterminalinizden komut çalıştırmayı denemelisiniz , bu da temel Vim komutlarının öğreticisini başlatır.

Rob Wells tavsiye hakkında *ve #aynı zamanda çok formüller verilmiştir edilir.


1
ayrıca bkz. dizin arama eklentisi vim.org/scripts/script.php?script_id=1682
SergioAraujo

Bir sonraki maça atlamanın bir yolu var mı (mevcut satırda değil)?
user13107

@ user13107: n ve N, arabellek / dosya üzerinde çalışır. Geçerli satırla sınırlı değilsiniz.
Xavier

@XavierT. herhangi bir fikir, nasıl ben arama sonuçlarında sabit sayıda atlama olabilir. Örneğin, 10. eşleşen satıra atlamak
GP cyborg

@GPcyborg: nÇoğu vim operatörü gibi, komutu tekrarlamak için bir numara ile önek kullanılabilir. Eğer yazarsanız 10n10. sonuca (ilk sonuçtan sonra) geçecektir. Aynı zamanda tüm hareket operatörü 3jiçin 3 satır aşağı gitmek ister .
Xavier T.

210

Vim'deki en yararlı kısayol olan IMHO *anahtardır.

İmleci bir sözcüğün üzerine getirin ve *tuşa basın, o kelimenin bir sonraki örneğine atlayacaksınız.

#Anahtar aynısını yapar, ancak kelimenin önceki örneğine atlar.

Gerçekten bir zaman tasarrufu.


6
Ve belli değilse nve bir kez bastığınızda maçlarda Nileri ve geri *gitmeniz durumunda *. (Veya *ileri veya #geri gitmek için basmaya devam edebilirsiniz , ancak bu kaydırılmış tuşları kullanmak genellikle en uygunudur.)
Herbert Sitz

3
@Herbert, aslında n ve N sizi “ileri” ve “geri” saymazlar. @Xavier Yukarıda belirtildiği gibi, n sonraki ve N, önceki . İleri ve geri arama kontrolü, aramayı '/' tuşu ve '?' İle belirterek yapılır. veya '*' tuşu ve '#' tuşu ile.
Rob Wells

* Bu kadar yararlı olduğunu düşünmüyorum ... çoğu zaman bir kelimenin bir parçasını arıyorum (örneğin, işlev adının bir parçası). Ben istemiyorum /Func, bu götür sahip SomeFuncbir sonraki örneğine gitmek için '*' sonra basını ve SomeFuncbir sonraki örneği zaman Funcolduğu SomeOtherFunc.
weberc2

Daha da kötüsü, C ++ ile /\<foo\>eşleşmediği için yöntem çağırma işleminden yöntem uygulamasına gitmiyor"className::foo()"
puk

84

Başlarken bir demo izlemem gerekiyordu .

Vim'de nasıl arama yapılır

  1. tip /
  2. arama terimi yazın, örneğin "var"
  3. basın enter
  4. için bir sonraki örneğin pres n(için önceki N )

2
Yazma *yanlış. Yani bir dosya aa aaa. Ara /aa, eşleşmelisin. İlk eşlemede düğmesine basıldığında *arama terimi değişir.
Bernhard

1
n 'sonraki' değil, “son aramayı tekrarla”. Yani? Var girildiğinde mevcut konumunuzdan 'var' için yukarı doğru arama başlar. Ve 'N' aslında "son aramayı ters yönde tekrarla" dır, dolayısıyla bu konum için geçerli konumdan 'var' aşağı doğru arama yapar.
Rob Wells



13

Tartışıldığı gibi, arama yapmanın birkaç yolu vardır:

/pattern
?pattern
* (and g*, which I sometimes use in macros)
# (and g#)

artı, önceki / sonraki Nve ile gezinme n.

Ayrıca düzenle / ile istemi aramayı çekerek arama geçmişini hatırlamak /ve sahip ardından devir C-p/ ' C-n. Daha da kullanışlı olanı q/, sizi arama geçmişinde gezinebileceğiniz bir pencereye götürür.

Ayrıca dikkate alınması gereken çok önemli 'hlsearch'( :hlsetkinleştirme türü ). Bu, deseninizin birden çok örneğini bulmayı çok daha kolay hale getirir. Hatta eşleşmelerinizi daha parlak hale getirmek isteyebilirsiniz:

hi Search ctermfg=yellow ctermbg=red guifg=...

Ancak, ekranınızın her yerinde sürekli sarı eşleşmelerle çıldırmış olabilirsiniz. Yani sık sık kendinizi kullanarak bulacaksınız :noh. Bu, bir eşlemenin sıralandığı kadar yaygındır:

nmap <leader>z :noh<CR>

Vurgulamamı temizlemek ziçin sürekli yazdığımdan /zz<CR>(bu, yazması hızlı bir olaydır) eskiden beri kolayca hatırlıyorum . Ancak :nohharitalama çok daha iyi.


2
Eğer esinlenerek hissediyorsanız q/, aynı zamanda oynamalısınız q:. Her ikisi de gerçekten kullanışlı! (Yine de bu soru ile ilgili değil.)
Micah Elliott

Teşekkürler Micah. Zaten çok fazla kullanmama rağmen 'q:' hakkında zaten bilgim vardı. Ama vim eğitimimde 'q /' tamamen özlendi ve bence çok fazla faydalanacak.
Stabledog

2

Eğer basarsanız Ctrl+ Entersiz "/ wordforsearch" gibi bir şey bastıktan sonra, o zaman geçerli satırda sözcüğü "wordforsearch" bulabilirsiniz. Sonra bir nsonraki maç için tuşuna basın ; Nönceki maç için basın .


1
"Bir arama yaptığımızda, Vim bulduğu ilk eşleşmeyi durdurarak geçerli imleç konumundan ileriye doğru tarar." Pratik Vim'in işaret ettiği gibi.
bas ayna
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.