Można to zrobić na kilka sposobów.
Wewnątrz bieżącego katalogu
Jeśli chcesz przeprowadzić wyszukiwanie / zamianę w drzewie projektu, możesz użyć listy argumentów Vima .
Po prostu otwórz Vima, a następnie użyj :argspolecenia, aby wypełnić listę argumentów. Możesz przekazać wiele nazw plików, a nawet globów.
Na przykład :args **/*.rbbędzie rekurencyjnie przeszukiwał bieżący katalog w poszukiwaniu plików ruby. Zauważ, że jest to również otwarcie Vima za pomocą vim **/*.rb. Możesz nawet użyć polecenia powłoki, findaby uzyskać listę wszystkich plików w bieżącym katalogu, uruchamiając:
:args `find . -type f`
Możesz wyświetlić bieżącą listę argumentów, uruchamiając :argssię samodzielnie. Jeśli chcesz dodać lub usunąć pliki z listy, można użyć :argaddalbo z :argdeletepolecenia odpowiednio.
Gdy jesteś zadowolony z listy, możesz teraz użyć potężnego :argdopolecenia Vima, które uruchamia polecenie dla każdego pliku na liście argumentów::argdo %s/search/replace/g
Oto kilka wskazówek dotyczących wyszukiwania (na podstawie niektórych komentarzy):
- Użyj granicy słowa, jeśli chcesz wyszukać „foo”, ale nie „foo_bar”. Użyj konstrukcji
\<i \>wokół wzorca wyszukiwania w następujący sposób::argdo %s/\<search\>/foobar/g
- Użyj
/cflagi wyszukiwania, jeśli chcesz, aby Vim poprosił o potwierdzenie przed zamianą wyszukiwanego hasła.
- Użyj
/eflagi wyszukiwania, jeśli chcesz pominąć błędy „wzorzec nie znaleziony”.
- Można również zdecydować się na zapisanie pliku po wykonaniu wyszukiwania:
:argdo %s/search/replace/g | update. Tutaj :updatejest używany, ponieważ zapisze plik tylko, jeśli został zmieniony.
Otwórz bufory
Jeśli masz już otwarte bufory, które chcesz przeszukać / zamienić, możesz użyć :bufdo, który uruchamia polecenie dla każdego pliku na liście buforów ( :ls).
Polecenie jest bardzo podobne do :argdo: :bufdo %s/search/replace/g
Podobnie jak :argdoi :bufdoistnieje :windoi :tabdodziała odpowiednio na okna i karty. Są rzadziej używane, ale nadal warto je znać.
/cflagi do potwierdzenia zamiany.