Powiedzmy, że mam funkcję o nazwie StripWhitespace
.
Mogę uruchomić go na jednym pliku, otwierając go i uruchamiając :StripWhitespace
.
Jak mogę automatycznie uruchomić tę funkcję na folderze plików i zapisywać wyniki podczas pracy?
macro
multiple-files
żaba kwadratowa
źródło
źródło
Odpowiedzi:
Możesz użyć
-c
argumentu, aby uruchomić komendę podczas uruchamiania, zvim(1)
:Przykład:
Aby wyjść później, dodaj
| :wqa
:źródło
Jeśli jesteś już w Vimie, możesz użyć poleceń
:argdo
lub:bufdo
, aby wykonać polecenie odpowiednio dla każdego elementu na liście argumentów lub liście buforów.np. aby uruchomić
:
polecenie dla każdego pliku na liście argumentów:Lub, aby wywołać funkcję z każdego pliku na liście buforów:
Lub, aby uruchomić makro
q
dla każdego pliku na liście argumentów:Następnie możesz zapisać wszystkie zmienione bufory za pomocą
:wall
lub zapisać wszystkie i wyjść z Vima za pomocą:wqall
.Jeśli chcesz zapisywać pliki w trakcie pracy, możesz dodać połączenie w następujący
:update
sposób:Są różne sposoby na przeniesienie plików do Vima, w tym:
vim *
(spowoduje to dodanie wszystkich plików do listy argumentów),:args
polecenia (które obsługuje symbole wieloznaczne i wyrażenia wsteczne), aby wypełnić listę argumentów, lub:argadd
polecenia, aby dodać do niej pliki,:e
,:Ex
lub wtyczki plik do otwarcia.źródło
'hidden'
ustawienia; (2): update
polecenie jest niewielkim ulepszeniem,:w
ponieważ zapisuje tylko, jeśli dokonano zmiany, więc:bufdo update
lub:argdo update
zapisze wszystkie zmodyfikowane bufory lub argumenty.update
. Zastanawiałem się, czy nie wspomnieć,hidden
kiedy pisałem odpowiedź, ale zdecydowałem się jej odmówić, ponieważ nie chciałem jej nadmiernie komplikować. Jednak po namyśle powinien tam być. Zaktualizuję odpowiedź, aby uwzględnić obecnie obie sugestie.:wall
, który ma tę zaletę, że nie przeskakuje przez bufory i odsuwa cię od miejsca, w którym zacząłeś. Przypuszczam, że:argdo update
to wciąż inna historia - być może nie chcesz pisać do buforów, których nie ma na twojej liście argumentów.