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 :args
polecenia, aby wypełnić listę argumentów. Możesz przekazać wiele nazw plików, a nawet globów.
Na przykład :args **/*.rb
bę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, find
aby 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 :args
się samodzielnie. Jeśli chcesz dodać lub usunąć pliki z listy, można użyć :argadd
albo z :argdelete
polecenia odpowiednio.
Gdy jesteś zadowolony z listy, możesz teraz użyć potężnego :argdo
polecenia 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
/c
flagi wyszukiwania, jeśli chcesz, aby Vim poprosił o potwierdzenie przed zamianą wyszukiwanego hasła.
- Użyj
/e
flagi 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 :update
jest 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 :argdo
i :bufdo
istnieje :windo
i :tabdo
działa odpowiednio na okna i karty. Są rzadziej używane, ale nadal warto je znać.
/c
flagi do potwierdzenia zamiany.