Kako sam napravio VIM-ovo cijelo projektno pretraživanje bez poteškoća s ripgrepom

Da, napustio sam grep i the_silver_searcher (ag) zbog ripgrepa.

Bez obzira jeste li prisiljeni koristiti VIM na svom radnom mjestu ili ste ludi ljubitelj VIM-a poput mene koji opsjedne produktivnošću, traženje ključnih riječi u cijelom projektu osnovni je zahtjev svakog programera u arsenalu svog urednika. I očekujemo da će brzo planuti. ⚡️

Već tri godine koristim VIM. A potječući iz uzvišene pozadine, potreba za pretraživanjem na cijelom projektu bila je presudna.

ripgrep i ack.vim bile su stvari koje sam usvojio rano nakon svojih neispunjenih iskustava s grepom i the_silver_searcher (ag). Od tada se više nisam osvrtao.

Ovaj je članak rezultat eksperimentiranja s različitim alatima za pretraživanje i postupnih poboljšanja koja sam napravio tijekom određenog vremenskog razdoblja dok se nije osjećao baš kako treba.

Zašto ack.vim & ripgrep?

  1. Brzo: Radio sam na projektima Symfony i JavaScript s tisućama datoteka, a to jednostavno brzo plamti. Evo brze usporedbe s drugim alatima za pretraživanje.

    Moja referentna vrijednost za brzinu je "nikad se ne smije osjećati sporo". Primijetio sam ogromno poboljšanje nakon što sam prešao s grep, the_silver_searcher i ack.

  2. Brza navigacija : ack.vim brine se o popunjavanju popisa Quickfix, koji vam omogućuje udobno kretanje kroz sve te rezultate pretraživanja u različitim datotekama.
  3. Značajne zadane vrijednosti: ripgrep prema zadanim postavkama uzima u obzir gitignore i automatski preskače skrivene datoteke / direktorije i binarne datoteke.

Pregled

ack.vim je VIM dodatak koji djeluje kao omot za pretraživanje ključnih riječi i popunjavanje popisa Quickfix za navigaciju rezultatima.

ripgrep (rg) je alat naredbenog retka kojiack.vim će interno koristiti za obavljanje stvarne pretraživanja za cijeli projekt.

Koraci

Korak 1 : Instalirajte ripgrep

Ako više volite homebrew poput mene, pokrenite sljedeće da biste instalirali rg:

brew tap burntsushi/ripgrep //github.com/BurntSushi/ripgrep.git brew install burntsushi/ripgrep/ripgrep-bin

Evo automatizirane skripte koju koristim kao dio svojih datoteka s točkama.

Ako više volite bilo koji drugi način instalacije, pogledajte službeni odjeljak instalacije ripgrepa.

Korak 2 : Instalirajte ack.vim

Da biste instalirali ack.vim pomoću upravitelja paketa vim-plug, dodajte sljedeće u svoj vimrc:

Plug 'mileszs/ack.vim' 

ili pogledajte odjeljak instalacije ack.vim-a.

Korak 3 : Konfigurirajte ack.vim za upotrebu rg

Dodajte sljedeću konfiguraciju u svoj vimrc:

" ack.vim --- {{{ " Use ripgrep for searching ⚡️ " Options include: " --vimgrep -> Needed to parse the rg response properly for ack.vim " --type-not sql -> Avoid huge sql file dumps as it slows down the search " --smart-case -> Search case insensitive if all lowercase pattern, Search case sensitively otherwise let g:ackprg = 'rg --vimgrep --type-not sql --smart-case' " Auto close the Quickfix list after pressing '' on a list item let g:ack_autoclose = 1 " Any empty ack search will search for the work the cursor is on let g:ack_use_cword_for_empty_search = 1 " Don't jump to first match cnoreabbrev Ack Ack! " Maps / so we're ready to type the search keyword nnoremap / :Ack! " }}} " Navigate quickfix list with ease nnoremap  [q :cprevious nnoremap  ]q :cnext

Napomena: let g:ackprgdefinira naredbu koja će se ack.vim interno izvoditi.

Također imajte na umu da rgovdje koristimo neke opcije. Pogledajte kako man rgbiste izmijenili opcije koje mogu zadovoljiti vaše zahtjeve.

Da biste istražili mogućnosti za ack.vim, pogledajte sljedeću dokumentaciju.

Upotreba

Sad kad smo spremni, evo najčešćih slučajeva upotrebe:

Potražite riječ ispod kursora

Pritisnite / nakon čega slijedi enter .

Budući da smo postavili let g:ack_use_cword_for_empty_search = 1, Ack se vraća na trenutnu riječ ispod kursora za pretraživanje, tako da nema potrebe za upisivanjem te riječi.

Traženje riječi

Pritisnite / nakon čega slijedi riječ (bez navodnika) i unesite.

Budući da koristimo pametni slučaj s ripgrepom, to će izvršiti pretraživanje bez velikih i malih slova ako je riječ mala i mala slova, a u suprotnom.

Regex pretraživanje

Pritisnite / nakon čega slijedi obrazac regularnog izraza u navodnicima & enter.

Navigacija kroz rezultate

Ack.vim popunjava rezultate na popisu Quickfix koji se otvara kao zasebni donji prozor. Postoji više načina za kretanje po popisu rezultata:

  • Možete se kretati popisom Quickfix pomoću j/ki pritisnite enterda biste zatvorili Quickfix popis. VIM će vas odvesti na točno mjesto pronađene riječi.
  • Također možete koristiti internetske tipke ]qili [q. VIM će pomaknuti kursor na sljedeći / prethodni rezultat i po potrebi će otvoriti datoteku u novom međuspremniku.

    Da biste zatvorili popis Quickfix-a nakon što završite, možete otići na donji prozor Quickfix-a i zatvoriti ga ili jednostavno pokrenuti :cclose

  • Pokrenite da biste otvorili sigurnosnu kopiju popisa Quickfix :copen

Završna riječ

Eto vam ga, besprijekorno pretraživanje i navigacija za vaše sljedeće pretraživanje projekata po cijelom projektu!

If you're stuck anywhere, look for the respective ack.vim and ripgrep docs/issues in their respective repositories, or send me a message. Share the configuration you're proud of, so it can help others improve theirs.

Here are my dotfiles.