Używasz vima. Masz wbudowane narzędzie do wykonania tego.
Jak można się spodziewać, jest już siedem odpowiedzi, z których należy skorzystać grep. Ale wydaje mi się, że do tej pory byłem jedyną osobą, która zauważyła twoje pytanie, którego używasz vim. Jako takie, chociaż można używać grepod wewnątrz vim, można również użyć vim„s wbudowane narzędzie. Jest to wywoływane za pomocą :vimgreppolecenia.
Aby wyszukać „wszystkie pliki źródłowe C w bieżącym katalogu w poszukiwaniu wywołań funkcji toUpperCase()”, należy wpisać vimpolecenie
:vimgrep "\<toUpperCase\_s*(" *.c
Wynikowa lista dopasowań jest automatycznie ładowana do listy szybkich poprawek, dostępnej za pomocą jednego z nich (zobacz subtelną różnicę w pomocy online)
:copen
:cwin
Aby znaleźć definicję funkcji , a nie wywołania, ctagsjest to narzędzie, jak wspomniano w Gillesodpowiedzi , w połączeniu z poleceniami :tjumplub :tselect.
Dlaczego warto korzystać :vimgrep?
Pomoc on-line ( :help grep) wylicza kilka powodów, których tutaj nie będę papugować. Oprócz tego porównaj działanie :vimgrepz dietbuddhaodpowiedzią . dietbuddhaWiersz poleceń wyświetla osobny grepproces dla każdego pliku źródłowego C. Nie stosuje się nawet xargsdo zmniejszenia tego narzutu. I nadal musisz jakoś przeanalizować dane wyjściowe, aby wywołać edytor tekstowy na odpowiednich plikach źródłowych po zakończeniu. :vimgrepwcale nie rozwidla wielu dodatkowych procesów, a korzystanie z rezultatów to sama prostota. Samo wybranie jednego z wpisów na wynikowej liście poprawek automatycznie ustawia kursor w odpowiednim wierszu odpowiedniego pliku źródłowego.
W rzeczywistości robi dokładnie to, co napisałeś, robiłbyś ręcznie, z wyjątkiem automatycznego. To zautomatyzowany sposób wykonywania tych czynności edytora tekstu. Ładuje plik tak, jakby był ładowany ręcznie, wyszukuje w nim wyrażenie regularne (używając tej samej składni wyrażeń regularnych, z której korzystasz już gdzie indziej vim), rejestruje miejsca, w których występują dopasowania, a następnie zwalnia plik.