Yanıtlar:
Doktorun dediği gibi:
Vim has two ways to find matches for a pattern: Internal and external.
Özetle, :vimgrep
dosyaları okumak ve bulmak için Vim'in grep mekanizmasını kullanır. :grep
aynı işi başarmak için harici komutlar kullanır.
/
Geçerli tampon sadece, oysa aramaktır :[vim]grep
kerede bütün bir projede arama yapmasını sağlayan dosyaların bir deseni arama.
:h grep
Daha fazla bilgi için bir göz atın .
Bir yararı :[vim]grep
over /?
(kullanırsanız veya konum listesinden sonuçları QuickFix listeye koymak almak olduğunu :l[vim]grep
,) kullanarak tüm maç listesini yukarı çekin ki bu araçlar :cl
. Daha sonra, listeden doğrudan istediğiniz sonuca gitmek için bir numara kullanabilirsiniz.
Ayrıca, geçerli arabelleği :[vim]grep pattern %
aramak için tüm kod tabanınızı aramakla aynı komutu kullanabileceğiniz anlamına gelir, :[vim]grep pattern path
böylece güzel bir simetri vardır.
Bunun yanı sıra, size çok güçlü bir arama yapmak için Silver Surfer / Ripgrep'i dallayabilir ve kullanabilirsiniz . Bunlar :[vim]grep
komuta eşlenebilir .
Gördüğüm 3 ana avantaj var
Tutarlı bir regex
motor / sözdizimi kullanın: Kullanarak :grep/vimgrep
, vb. Olarak grepprg
tanımlanabilecek bir a tanımlamanızı sağlar. Bunu grep/ack/ag
kullanarak, tutarlı bir regex
motor kullanarak geçerli arabelleği veya birden çok arabelleği / dosyayı arayabilirsiniz . Öte yandan, vim/pattern
seçeneğini kullanırsanız, sözdizimine göre farklı bir sözdizimine sahip olan vim'in varsayılan normal ifade motorunda takılı kalırsınız extended regular expression
. Yani, bir ifadenin aramak zorunda zaman, sen / düşünmek zorunda kullanmak gerekip gerekmediğini hatırlar \)
ya da sadece )
ve diğer farklılıklar. Bu çok can sıkıcı olabilir ( /programming/3864467/whats-the-difference-between-vim-regex-and-normal-regex )
vimgrep bir hızlı düzeltme / konum listesi doldurur : kullanarak :grep/vimgrep
bir arama listesi doldurmanıza izin verir. ( https://medium.com/@lakshmankumar12/quickfix-and-location-list-in-vim-ca0292ac894d ).
Konum listesini kullanmak ]q
istiyorsanız, Tim-Popes engellenmemiş eklentiniz varsa gezinmek için kısayolu kullanabilirsiniz ( https://github.com/tpope/vim-unimpaired )
vim içindeyken karmaşık aramalar : genellikle karmaşık aramalar yapmanız gerekiyorsa, komut satırını kullanmanız gerekebilir. Ancak, greprg
doğru bir şekilde tanımlar ve [1] gibi bir komut kullanırsanız
: vim / desen1 / find . -type f
Çok karmaşık aramalar yapabilir ve arama sonuçlarını location list
veya öğenizde görüntüleyebilirsiniz quickfix list
.
[1] http://vimcasts.org/episodes/search-multiple-files-with-vimgrep/