W poprzednim artykule opisałem selektory, z których można korzystać podczas pracy z Vim’em. Czas na opis jak edytować pliki.

Z wprowadzaniem tekstu nie powinno już być problemu, wystarczy przejść w tryb wprowadzania i wszystko co wpiszemy pojawi się w tekście. Co jednak, gdy chcemy zmienić lub usunąć wpisany tekst?

Zacznijmy od usuwania:

x – usuwa znak pod kursorem
X – usuwa znak za kursorem (Backspace)
d – usuwa ciąg znaków od kursora do miejsca wskazanego następną komendą

No właśnie jak to działa? Tu są potrzebne selektory poznane w poprzednim rozdziale a także komendy ruchu poznane dwa rozdziały prędzej, Np.:

diw – usunie cały wyraz
di( – usunie zawartość nawiasu
d]) – usunie zawartość od kursora do końca nawiasu
da) – usunie zawartość nawiasu wraz ze znakami nawiasu
d$ – usunie zawartość od kursora aż do końca linii
dg_ – usunie zawartość od kursora aż do ostatniego nie białego znaku w linii.

… i tak dalej…

Kopiowanie:

Za kopiowanie odpowiada literka y (yank) i potrzebuje modyfikatorów analogicznie jak wyżej. np.:

yaw – kopiowanie całego wyrazu wraz z białymi znakami, aż do następnego wyrazu.

Zmiana:

dodatkową opcją edycji jest Change oznaczona literką c. Działa ona w ten sposób, że wycina cały wybrany fragment i przechodzi do trybu wprowadzania. Wycięty fragment będzie można wkleić.

Jeżeli chcemy którąś z tych komend zastosować na całej linijce to wpisujemy ją podwójnie.

dd – usuwa całą linijkę
yy – kopiuje całą linijkę
cc – wycina całą linijkę.

Wklejanie tekstu

p – wkleja tekst za kursorem
P – wkleja tekst przed kursorem

Trochę bardziej zaawansowane:

Vim nie przechowuje w schowku tylko ostatniej kopiowanej (czy też wycinanej rzeczy), tylko kilka ostatnich. Jeżeli nie precyzujemy konkretnie, to oferowany jest ostatni wpis w rejestrze. Możemy jednak sami definiować gdzie ma być kopiowane i co wklejane.
Rejestry można zobaczyć wydając komendę :registers
Jeżeli chcemy użyć komendy do konkretnego rejestru to wpisujemy symbol rejestru poprzedzony cudzysłowem bezpośrednio przed komendą, np.:

"1yy – kopiuje całą linijkę do rejestru "1
"1p – Wkleja zawartość rejestru o nazwie "1

Zastępowanie znaków.

r – zastępuje obecny znak tym, który zostanie wprowadzony
s – zastępuje tekst od obecnej pozycji kursora aż do miejsca wskazanego następną komendą, przez tekst, który będzie wpisany.

Dokładne zrozumienie działania tych komend wymaga trochę dłuższego opisu. Zacznijmy od prostrzej sprawy czyli Replace r:
W najprostrzej postaci komenda ta służy do poprawiania literówek, najeżdżamy na znak który chcemy zmienić, wciskamy „r” wciskamy znak, który ma być w tym miejscu i następuje zamiana. Nic prostrzego. Komendę możemy wykorzystać do trochę bardziej zaawansowanych zadań. Np. mamy kilkanaście spacji pomiędzy wyrazami i chcemy je zastąpić znakiem kropki. Umieszczamy w takim przypadku kursor na pierwszej spacji pomiędzy wyrazam, wpisujemy komendę viw która urochomi tryb wizualny i zaznaczy całą przestrzeń pomiędzy wyrazami, następnie wciskamy r jako że chcemy zastąpić znak i na koniec znak kropki. Całe zaznaczenie zostanie zamienione na kropki.

Podobnie jak r działa s, z tą różnicą, że nie zmienia jednego znaku, ale pozwala wprowadzić dowolny tekst, którym zastąpi wybrane zaznaczenie. Jeżeli utworzymy zaznaczenie blokowe w trybie wizualnym, to możemy zmienić tekst w kilku linijkach. Przydatne to jest np. podczas edycji zapytań sql lub danych pseudotabelkowych.

Słowo na koniec.

Na sam koniec zostawiłem perełkę, którą warto poznać. Jest nią znak . (symbol kropki). Wciśnięcie tego znaku wykonuje ponownie ostatnią komendę z grupy edycji (czyli te poznane dzisiaj).

Trenujcie, jutro jedziemy dalej…
.