Źródło informacji: 1
Dla użytkowników emacs pro:
- Wywołaj dired, aby wyświetlić listę plików w katalogu lub zadzwoń znajdź dired, jeśli potrzebujesz wszystkich podkatalogów.
- Zaznacz żądane pliki. Możesz zaznaczyć regex, wpisując 【% m】.
- Wpisz Q, aby wywołać dired-do-query-replace-regexp.
- Wpisz szukane wyrażenie regularne i zamień ciąg. ☛ ☛ wspólny wzór wyrażenia regularnego elisp〕
- Dla każdego wystąpienia wpisz y, aby zastąpić, n, aby pominąć. Wpisz 【Ctrl + g】, aby przerwać całą operację.
- Rodzaj ! aby zastąpić wszystkie wystąpienia w bieżącym pliku bez pytania, N, aby pominąć wszelkie możliwe zamiany pozostałej części bieżącego pliku. (N to tylko emacs 23)
- Aby wykonać zamianę wszystkich plików bez dalszego pytania, wpisz Y. (tylko Emacs 23)
- Zadzwoń do ibuffera, aby wyświetlić listę wszystkich otwartych plików. Wpisz 【* u】, aby zaznaczyć wszystkie niezapisane pliki, wpisz S, aby zapisać wszystkie zaznaczone pliki, wpisz D, aby je wszystkie zamknąć.
Przewodnik krok po kroku dla początkujących graczy Emacsa
Wybierz pliki docelowe
Uruchom emacsa, wpisując „emacs” w wierszu poleceń interfejsu wiersza poleceń. (Lub kliknij dwukrotnie ikonę Emacsa, jeśli jesteś w środowisku graficznego interfejsu użytkownika)
Wybieranie plików w katalogu
Najpierw musisz wybrać pliki, które chcesz zastąpić. Skorzystaj z menu graficznego 〖Plik ▸ Otwórz katalog〗. Emacs poprosi cię o ścieżkę do katalogu. Wpisz ścieżkę katalogu, a następnie naciśnij klawisz Enter.
Teraz zostanie wyświetlona lista plików, a teraz musisz zaznaczyć pliki, na których ma działać regex find / replace. Zaznacz plik, przesuwając kursor do żądanego pliku, a następnie naciśnij m. Usuń zaznaczenie, naciskając u. (Aby wyświetlić listę podkatalogów, przenieś kursor do katalogu i naciśnij i. Zawartość podkatalogu zostanie wyświetlona na dole.) Aby oznaczyć wszystkie pliki za pomocą wyrażenia regularnego, wpisz 【% m】, a następnie wpisz wzorzec wyrażenia regularnego. Na przykład, jeśli chcesz oznaczyć wszystkie pliki HTML, wpisz 【% m】, a następnie .html $. (Listę komend oznaczania można znaleźć w menu graficznym „Mark” (to menu pojawia się, gdy jesteś w trybie dired).)
Wybieranie plików w katalogu i wszystkich jego podkatalogach
Jeśli chcesz znaleźć / zamienić na pliki w katalogu, w tym setki podkatalogów, oto metoda wyboru wszystkich tych plików.
Zadzwoń znajdź-dired. (wywołujesz polecenie, naciskając 【Alt + x】) Następnie wpisz nazwę katalogu ⁖ / Users / mary / myfiles
Uwaga: jeśli używasz emacsa na nie graficznym terminalu tekstowym unix, a jeśli 【Alt + x】 nie działa, równoważne naciśnięcie klawisza to 【Esc x】.
Emacs poprosi cię o komunikat „Uruchom znajdź (z argumentami):”. Aby zastąpić wszystkie pliki HTML, wpisz -name „* html”. Jeśli nie obchodzi Cię, jakiego rodzaju plik, ale po prostu wszystkie pliki w tym katalogu, podaj „-type f”.
Teraz zaznacz pliki zgodnie z powyższym opisem.
Interaktywne wyszukiwanie / zamiana
Teraz jesteś gotowy, aby zastąpić wyszukiwanie interaktywne. Dla uproszczenia załóżmy, że chcesz po prostu zastąpić słowo „szybki” słowem „super”. Teraz wywołaj dired-do-query-replace-regexp. Poprosi Cię o ciąg wyrażenia regularnego i ciąg zastępujący. Wpisz „szybkie”, wpisz, a następnie „super”.
Teraz emacs użyje twojego wzorca i sprawdzi pliki, zatrzyma się i pokaże za każdym razem, gdy wystąpi dopasowanie. Kiedy tak się stanie, emacs wyświetli monit, a Ty możesz dokonać zmiany lub pominąć zmianę. Aby wprowadzić zmianę, wpisz y. Aby pominąć, wpisz n. Jeśli po prostu chcesz, aby emacs kontynuował i wprowadził wszystkie takie zmiany w bieżącym pliku, wpisz!
Jeśli chcesz anulować całą operację bez zapisywania wprowadzonych zmian, wpisz 【Ctrl + g】, a następnie zakończ emacsa za pomocą menu 〖Plik ▸ Wyjdź z Emacsa〗.
Zapisywanie zmienionych plików
Teraz, po przejściu powyższej próby, musisz zrobić jeszcze jeden krok, a mianowicie zapisać zmienione pliki.
Jeśli używasz emacsa w wersji 22 lub nowszej, wywołaj ibuffer, aby przejść do trybu listy buforów, a następnie wpisz type * u】, aby zaznaczyć wszystkie niezapisane pliki, a następnie wpisz S, aby je wszystkie zapisać. (to zmiany)
Jeśli używasz emacsa w wersji 21, możesz to zrobić: wywołać bufory listy, a następnie przesunąć kursor do pliku, który chcesz zapisać i wpisać s. Zaznacza plik do późniejszego zapisania. Wpisz u, aby odznaczyć. Po zakończeniu wpisz x, aby uruchomić zapisywanie wszystkich plików oznaczonych do zapisania. (w emacs otwarty plik nazywa się „buforem”. Pomiń inne rzeczy.)
Alternatywnie do powyższych opcji możesz także wywołać save-some-buffers 【Ctrl + xs】. Następnie emacs wyświetli każdy niezapisany plik i zapyta, czy chcesz go zapisać.
Uwaga: wyrażenie regularne emacsa nie jest takie samo, jak Perl lub Python, ale podobne. Aby uzyskać podsumowanie i typowe wzorce, zobacz: Emacs Regex.