Ne zaman kullanılır: vrep in: grep and: vimgrep?


17

In vim :makehataları oluşturmayı ve düzeltmeyi kolaylaştırır :grepve :vimgrepgibi davranır :make. Ama neden bu iki komuta ihtiyacınız var? Neden sadece paterni araştırıp basmıyorsunuz n? Sadece arama yapmanın avantajları nelerdir?

Yanıtlar:


17

Doktorun dediği gibi:

Vim has two ways to find matches for a pattern: Internal and external.

Özetle, :vimgrepdosyaları okumak ve bulmak için Vim'in grep mekanizmasını kullanır. :grepaynı işi başarmak için harici komutlar kullanır.

/Geçerli tampon sadece, oysa aramaktır :[vim]grepkerede bütün bir projede arama yapmasını sağlayan dosyaların bir deseni arama.

:h grepDaha fazla bilgi için bir göz atın .


4

/?yalnızca geçerli tampon arama ama :grepve :vimgrepargümanlar olarak keyfi dosyaları / desenleri / globs alır.


4

Bir yararı :[vim]grepover /?(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 pathbö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]grepkomuta eşlenebilir .


0

Gördüğüm 3 ana avantaj var

  1. Tutarlı bir regexmotor / sözdizimi kullanın: Kullanarak :grep/vimgrep, vb. Olarak grepprgtanımlanabilecek bir a tanımlamanızı sağlar. Bunu grep/ack/agkullanarak, tutarlı bir regexmotor 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 )

  2. vimgrep bir hızlı düzeltme / konum listesi doldurur : kullanarak :grep/vimgrepbir arama listesi doldurmanıza izin verir. ( https://medium.com/@lakshmankumar12/quickfix-and-location-list-in-vim-ca0292ac894d ).

    Konum listesini kullanmak ]qistiyorsanız, Tim-Popes engellenmemiş eklentiniz varsa gezinmek için kısayolu kullanabilirsiniz ( https://github.com/tpope/vim-unimpaired )

  3. vim içindeyken karmaşık aramalar : genellikle karmaşık aramalar yapmanız gerekiyorsa, komut satırını kullanmanız gerekebilir. Ancak, greprgdoğ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 listveya öğenizde görüntüleyebilirsiniz quickfix list.

[1] http://vimcasts.org/episodes/search-multiple-files-with-vimgrep/

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.