Hogyan készítettem a VIM Projekt-szintű keresését zökkenőmentesen, ripgrep segítségével

Igen, a grepet és az ezüst_kutatót (ag) elárasztottam a ripgrep használatához.

Akár kénytelen a munkahelyén használni a VIM-et, akár egy olyan őrült VIM-rajongó vagy, mint én, aki a termelékenység iránt rajong, a projektszintű kulcsszókeresés alapvető követelmény, amelyet minden fejlesztőnek meg kell adnia a szerkesztő arzenáljában. És arra számítunk, hogy gyorsan lángol. ⚡️

Körülbelül 3 éve használom a VIM-et. És fennkölt háttérből fakadóan elengedhetetlen volt az egész projektre kiterjedő keresés igénye.

A ripgrep és az ack.vim olyan dolgok voltak, amelyeket korán átvettem a grep és az ezüst_kutató (ag) tapasztalatlan tapasztalataim után. Azóta sem néztem vissza.

Ez a cikk különböző keresőeszközökkel és növekményes fejlesztésekkel végzett kísérlet eredménye, amelyeket egy bizonyos idő alatt végeztem el, amíg megfelelőnek nem tűnt.

Miért éppen az ack.vim & ripgrep?

  1. Gyors: A Symfony és a JavaScript projekteken dolgoztam több ezer fájllal, és csak gyorsan lángol. Itt található egy gyors összehasonlítás más keresési eszközökkel.

    A sebesség mércéje: "soha nem szabad lassúnak érezni". Óriási javulást észleltem, miután elköltöztem a grep, az ezüst_kutató és az ACK-ról.

  2. Gyors navigáció : Az ack.vim gondoskodik a Gyorsjavítások listájának feltöltéséről, amely lehetővé teszi, hogy az összes keresési eredményt kényelmesen mozgassa a különböző fájlokban.
  3. Ésszerű alapértelmezések: A ripgrep alapértelmezés szerint a gitignore-t veszi figyelembe, és automatikusan átugorja a rejtett fájlokat / könyvtárakat és a bináris fájlokat.

Áttekintés

Az ack.vim egy VIM beépülő modul, amely burkolóként működik a kulcsszavak kereséséhez és a Gyorsjavítás listájának feltöltéséhez az eredmények navigálásához.

A ripgrep (rg) egy parancssori eszköz, amelyAz ack.vim belsőleg fogja használni a tényleges, az egész projektre kiterjedő keresést.

Lépések

1. lépés : Telepítse a ripgrep programot

Ha jobban szereti a homebrew-t, mint én, futtassa a következőt az rg telepítéséhez:

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

Itt van egy automatizált szkript, amelyet a dotfileim részeként használok.

Ha bármilyen más telepítési módot kedvel, olvassa el a ripgrep hivatalos telepítési szakaszát.

2. lépés : Telepítse az ack.vim fájlt

Az ack.vim telepítéséhez a vim-plug csomagkezelő segítségével adja hozzá a következőket a vimrc-be:

Plug 'mileszs/ack.vim' 

vagy olvassa el az ack.vim telepítési szakaszát.

3. lépés : Állítsa be az ack.vim fájlt az rg használatához

Adja hozzá a következő konfigurációt a vimrc-be:

" 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

Megjegyzés: let g:ackprgmeghatározza azt a parancsot, amelyet az ack.vim belsőleg futtat.

Vegye figyelembe azt is, hogy rgitt néhány lehetőséget használunk . Nézze meg a man rglehetőséget, hogy módosítsa azokat a lehetőségeket, amelyek megfelelhetnek az Ön igényeinek.

Az ack.vim beállításainak megismeréséhez olvassa el a következő dokumentációt.

Használat

Most, hogy készen állunk, íme a leggyakoribb felhasználási esetek:

Keressen egy szót a kurzor alatt

Nyomja meg a / gombot, majd nyomja meg az Enter billentyűt .

Mivel beállítottuk let g:ack_use_cword_for_empty_search = 1, Ack visszalép az aktuális szóra a kurzor alatt a kereséshez, ezért nem kell begépelni ezt a szót.

Szó keresése

Nyomja meg a / gombot, majd a szót (idézőjelek nélkül) és írja be.

Mivel intelligens kis- és nagybetűket használunk a ripgrep segítségével, ez kis- és nagybetűk közötti keresést fog végrehajtani, ha a szó mind kisbetűs, máskülönben pedig kis- és nagybetűket keres.

Regex keresés

Nyomja meg a / gombot, majd egy regex mintát idézőjelben és írja be.

Navigálás az eredmények között

Ack.vim populates the results in the Quickfix list, which opens up as a separate bottom window. There are multiple ways to navigate the results list:

  • You can navigate the Quickfix list using j/k and press enter to close the Quickfix list. VIM will take you to the exact location of the found word.
  • You can also use the hotkeys ]q or [q. VIM will move the cursor to the next/previous result and will open the file in a new buffer if required.

    To close the Quickfix list once you're done, you can either go to the bottom Quickfix window and close it or just run :cclose

  • To open the Quickfix list back up, run :copen

Closing Note

And there you have it, a seamless search and navigation for your next project-wide keyword search!

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.