Odpowiedzi:
Jak mówi doktor:
Vim has two ways to find matches for a pattern: Internal and external.
W skrócie, :vimgrepużywa mechanizmu grep Vima do odczytywania i znajdowania plików.:grepużywa zewnętrznych poleceń, aby osiągnąć to samo zadanie.
/Wyszukiwania jest tylko dla bieżącego bufora, natomiast:[vim]grep przeglądać struktury plików, pozwalając, aby szukać w całym projekcie naraz.
Przyjrzeć się :h grep, aby uzyskać więcej informacji.
Jedną z zalet :[vim]grepponad /?jest to, że wyniki są umieszczane na liście szybkich poprawek (lub liście lokalizacji, jeśli używasz :l[vim]grep), co oznacza, że możesz wyciągnąć listę wszystkich dopasowań za pomocą:cl . Następnie możesz użyć numeru, aby przejść bezpośrednio do pożądanego wyniku z listy.
Oznacza to również, że możesz użyć tego samego polecenia do przeszukiwania bieżącego bufora, :[vim]grep pattern %jak do przeszukiwania całej bazy kodu, :[vim]grep pattern pathwięc jest w tym trochę symetrii.
Następnie możesz rozgałęzić się i użyć Silver Surfer / Ripgrep, aby zapewnić bardzo mocne wyszukiwanie. Można je odwzorować na :[vim]greppolecenie.
Widzę 3 podstawowe zalety
Używaj spójnego regexsilnika / składni: Używanie :grep/vimgreppozwala zdefiniować grepprg, który można zdefiniować grep/ack/agitd. Używając tego możesz przeszukiwać bieżący bufor lub wiele buforów / plików, używając spójnego regexsilnika. Z drugiej strony, jeśli użyjesz opcji vima/pattern , utkniesz w domyślnym silniku wyrażeń regularnych vima, który ma inną składnię niż extended regular expressionskładnia. Tak więc, za każdym razem, gdy będziesz musiał szukać wyrażenia, będziesz musiał pomyśleć / pamiętać, czy powinieneś użyć, \)czy tylko )i inne różnice. Może to być bardzo denerwujące ( /programming/3864467/whats-the-difference-between-vim-regex-and-normal-regex )
vimgrep zapełnia listę poprawek / lokalizacji : użycie :grep/vimgrepumożliwia wypełnienie listy wyszukiwania. ( https://medium.com/@lakshmankumar12/quickfix-and-location-list-in-vim-ca0292ac894d ).
Jeśli chcesz skorzystać z listy lokalizacji, możesz użyć ]qskrótu, aby nią nawigować, jeśli masz nieuszkodzoną wtyczkę Tim-Popes ( https://github.com/tpope/vim-unimpaired )
skomplikowane wyszukiwania w vimie : zazwyczaj, jeśli musisz wykonywać skomplikowane wyszukiwania, możesz użyć wiersza poleceń. Jeśli jednak greprgpoprawnie zdefiniujesz i użyjesz polecenia, takiego jak [1]
: vim / pattern1 / find . -type f
Możesz wykonywać bardzo skomplikowane wyszukiwania i wyświetlać wyniki wyszukiwania w swoim location listlub quickfix list.
[1] http://vimcasts.org/episodes/search-multiple-files-with-vimgrep/