MC, 2025
Ilustracja do artykułu: Vim Replace All – poznaj magię zamiany tekstu!

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!

Imię:
Treść: