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ć grep
od wewnątrz vim
, można również użyć vim
„s wbudowane narzędzie. Jest to wywoływane za pomocą :vimgrep
polecenia.
Aby wyszukać „wszystkie pliki źródłowe C w bieżącym katalogu w poszukiwaniu wywołań funkcji toUpperCase()
”, należy wpisać vim
polecenie
: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, ctags
jest to narzędzie, jak wspomniano w Gilles
odpowiedzi , w połączeniu z poleceniami :tjump
lub :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 :vimgrep
z dietbuddha
odpowiedzią . dietbuddha
Wiersz poleceń wyświetla osobny grep
proces dla każdego pliku źródłowego C. Nie stosuje się nawet xargs
do 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. :vimgrep
wcale 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.