Vim Replace All – poznaj magię zamiany tekstu!
W świecie programistów i administratorów systemów edytor Vim ma status niemalże legendarnego narzędzia. Niezwykle szybki, lekki i potężny – potrafi zawstydzić niejeden nowoczesny IDE swoją skutecznością i elastycznością. Jedną z funkcji, która może drastycznie przyspieszyć naszą pracę z plikami tekstowymi, jest masowa zamiana tekstu, znana jako vim replace all. Niezależnie od tego, czy chcesz zastąpić jedno słowo innym w całym pliku, czy chcesz wykonać bardziej złożoną transformację danych – Vim Cię nie zawiedzie.
Dlaczego warto znać polecenie „vim replace all”?
Zamiana wszystkich wystąpień danego ciągu znaków w pliku to jedna z najczęściej wykonywanych operacji podczas pracy z kodem. Czy chodzi o refaktoryzację, poprawki literówek, zmianę nazw zmiennych czy aktualizację formatów danych – vim replace all przyspieszy te działania do maksimum.
Zamiast ręcznego klikania czy przewijania całego dokumentu w poszukiwaniu każdego wystąpienia – jedno polecenie w trybie normalnym wystarczy, by osiągnąć cel w mgnieniu oka. I co najważniejsze – masz pełną kontrolę nad tym, co dokładnie się dzieje!
Podstawowa składnia – zamień jedno na drugie
Oto najprostsze możliwe użycie funkcji „replace all” w Vimie:
:%s/stare/nowe/g
Rozbijmy to na czynniki pierwsze:
- % – oznacza „dla całego pliku”,
- s – to skrót od „substitute”,
- stare – to tekst, który chcemy znaleźć,
- nowe – to tekst, który ma zastąpić poprzedni,
- g – oznacza „globalnie”, czyli zamień wszystkie wystąpienia w linii (a nie tylko pierwsze).
Ten prosty wzorzec to absolutna podstawa. Działa w 99% przypadków, w których po prostu chcesz coś szybko podmienić.
Vim Replace All przykłady – od prostych do zaawansowanych
Oto kilka konkretnych vim replace all przykładów, które przydadzą się w codziennej pracy:
1. Zamiana tylko w wybranym zakresie
Chcesz zamienić coś tylko między linią 10 a 20?
:10,20s/foo/bar/g
To ograniczy działanie polecenia tylko do wskazanego fragmentu pliku.
2. Zamiana z potwierdzeniem
Czasami lepiej mieć kontrolę nad każdą zamianą. Wystarczy dodać flagę c:
:%s/foo/bar/gc
Dzięki temu Vim zapyta Cię o każdą zmianę – „yes/no/all/quit”. Niezwykle przydatne!
3. Zamiana z użyciem wyrażeń regularnych
Chcesz usunąć wszystkie cyfry z pliku?
:%s/[0-9]//g
A może chcesz dodać znak „#” przed każdą linijką zawierającą „TODO”?
:%s/.*TODO.*/# &/g
& to odniesienie do całego dopasowanego tekstu – sprytny trik!
4. Użycie grup i odwołań
Przenieśmy coś z końca linijki na początek:
:%s/\(.*\):\(.*\)/\2: \1/g
To klasyczny przykład użycia grup w regexach. Bardzo przydatny w formatowaniu danych!
Warianty składni – nie tylko na całym pliku
Vim pozwala na ogromną elastyczność. Możesz zamieniać tekst również w wizualnie zaznaczonym fragmencie:
:'<,'>s/foo/bar/g
To działa, jeśli najpierw zaznaczysz tekst w trybie wizualnym (np. klawiszem V), a następnie użyjesz powyższego polecenia. Znaki '< i '> reprezentują początek i koniec zaznaczenia.
Użycie z makrami i skryptami – automatyzacja poziom wyżej
Dzięki poleceniu „replace all” możesz automatyzować wiele czynności, np. w połączeniu z makrami (klawisz q) lub skryptami w VimL. Dla bardziej zaawansowanych – użycie Vim w trybie bez interakcji (vim -c) w skryptach bashowych potrafi zdziałać cuda:
vim -c "%s/stare/nowe/g | wq" plik.txt
To pozwala wykonać masową zamianę w wielu plikach za pomocą prostego skryptu!
Bezpieczeństwo – jak uniknąć katastrofy
Zamiana w całym pliku to potężne narzędzie, ale też pułapka. Dlatego:
- Zawsze wykonuj kopię zapasową pliku przed masową zmianą,
- Używaj /gc na początku, aby sprawdzić efekty,
- W razie czego pamiętaj, że u cofa ostatnią zmianę w Vimie!
Wizualne zamiany – połączenie z innymi poleceniami
Vim oferuje też możliwość tworzenia własnych funkcji i przypisań klawiszy. Jeśli często używasz tej samej zamiany – zrób z niej alias w swoim .vimrc!
nnoremap <Leader>r :%s/old/new/gc<CR>
To przypisze zamianę „old” na „new” pod np. \r (jeśli \ to Twój Leader key). Mega wygodne!
Jak zapamiętać vim replace all?
Najlepiej przez praktykę. Ćwicz codziennie, zamieniaj teksty w dokumentach, logach, skryptach. Wkrótce zauważysz, że działa to jak magia. Wpisanie:
:%s/foo/bar/g
wejdzie Ci w krew szybciej, niż się spodziewasz.
Ciekawostki o Vimie i zamianach
- Vim działa także w trybie bezpośrednim przez SSH – idealne dla adminów serwerów,
- Możesz przeszukiwać i zamieniać jednocześnie w wielu otwartych plikach przy użyciu :argdo,
- W połączeniu z grepem, awk czy sed – Vim tworzy prawdziwą linię produkcyjną dla tekstu!
Podsumowanie – mistrzostwo w zasięgu ręki
Funkcja vim replace all to jeden z tych małych, ale genialnych elementów, które sprawiają, że Vim jest tak potężny. Jej opanowanie to ogromna oszczędność czasu, mniej frustracji i więcej radości z pracy z tekstem. Niezależnie od tego, czy jesteś początkującym użytkownikiem Vima, czy weteranem klawiatury – zrozumienie i wykorzystanie tej funkcji zawsze przynosi korzyści.
Wystarczy jeden skrót, by przemienić chaos w porządek. Poczuj tę moc – zamieniaj wszystko, co trzeba, błyskawicznie i elegancko. Vim czeka, aż Ty również zostaniesz mistrzem!

Komentarze (0) - Nikt jeszcze nie komentował - bądź pierwszy!