Nauka VIMa przy użyciu ściągi może okazać się jednym z bardziej skutecznych sposobów na poznanie możliwości tego narzędzia. I nie jest to w żadnym wypadku kucie na blachę, choć z pozoru może tak wyglądać. Po prostu - piszemy coś w vimie potem zadajemy sobie pytanie np. "a jak przenosić się między zdaniami a nie męczyć się z b/w"? Zaglądamy tutaj, wiemy już jak, używamy i już zapamiętaliśmy.

Wstęp

edytuj

Opcje które używają słowa :set można dodać do pliku konfiguracyjnego vima, którego lokalizację znajdziemy wpisując:

:scriptnames

lub

:edit ~/.vimrc

jeśli uważamy, że wpisywanie tylu komend naraz by wykonać jedną konkretną czynność (np. wklejanie) jest zbyt trudne, możemy je zmapować, czyli na przykłąd, zamiast używać komendy do wklejania tekstu ze schowka do Vima:

"+gP

użyć częściej przez nas używanego CTRL+V:

map <C-V>		"+g

Powyższego przykładu nie musisz stosować, jest domyślnie zmapowany podczas pracy w Gvim w pliku mswin.vim

Pierwsze kroki

edytuj
   k
h     l
   j
komenda opis
vim plik.txt otwiera edytor tekstu razem z plikiem
h Lewo
j dół
k góra
l prawo
x usuwa znak
dd wycina wiersz
J usuwa znak nowej linii
u Cofnij
U ponów
a Przechodzi w tryb wstawiania (insert) i wstawia kursor za tekstem
i przełącza w tryb wstawiania (insert)
o tworzy nową, pustą linię poniżej kursora i przenosi Vima do trybu Insert.
:q wyjście z programu, jeśli nie dokonałeś żadnych zmian
:q! wychodzenie z programu bez zapisywania zmian
:wq wyjście i zapis zmian
:w zapis zmian w bieżącym dokumencie
:help Strony pomocy
:help x Pomoc na temat komendy, w tym wypadku x
:help deleting pomoc na temat usuwania tekstu
:help index Kompletny indeks wszystkich komend Vima

Poruszanie się

edytuj

Do przesunięcia kursora o jeden wyraz do przodu należy użyć komendy ”w”. Tak jak przy większości komend Vima możesz użyć mnożnika – liczbowego prefiksu – by przenieść się o kilka wyrazów. Na przykład ”3w” przenosi o 3 wyrazy. Działa to praktycznie z każdą komendą wymienioną poniżej:

komenda opis
w przesuwa kursor o następny wyraz
b poprzedni wyraz
$ przenosi kursor do końca linii
fx szuka w przód linii pojedynczego wystąpienia znaku "x"
F szuka w kierunku początku linii
t działa tak jak polecenie ”fx” z wyjątkiem tego, że zatrzymuje się jeden znak PRZED szukanym znakiem
T działa tak jak polecenie ”fx” z wyjątkiem tego, że zatrzymuje się jeden znak PO szukanym znakiem
% Szuka parującego elementu, czyli (), [], {}
G przenosi nas na KONIEC dokumentu
g przenosi nas na POCZĄTEK dokumentu
CTRL+D przemieszcza okno o pół ekranu w dół
CTRL+U przemieszcza okno o pół ekranu w górę
CTRL-E przewija jedną linię w dół
CTRl+Y przewija o jedną linię w górę (tylko Linux)
CTRL+F przewija cały ekran do przodu
CTRL+B przewija cały ekran do tyłu
/tekst szuka w dokumencie napisu "tekst" w dół
?tekst szuka w dokumencie napisu "tekst" w górę
n, N powtarza ostatnie wyszukiwanie w odwrotnym kierunku
:set ruler pokazywała pozycję kursora w prawym dolnym rogu
CTRL+G Komunikat wyświetla nazwę pliku, który jest edytowany, numer linii gdzie znajduje się kursor, całkowitą liczbę linii, procentowe miejsce w pliku oraz kolumnę kursora (tylko jeśli mamy opcję ruler)
/tu\> znajduje tylko słowa, które kończą się na „tu”:
/\<tu\> dopasowuje początek wyrazu
:set hlsearch podświetla dopasowania podczas wyszukiwania
:set nohlsearch wyłącza powyższą opcję
:set incsearch Wyszukiwanie w czasie rzeczywistym
r podmiana pojedynczego znaku (można używać mnożnika)
R podmiana całego wiersza
. (kropka) Powtarza ostatnią zmianę

Zaawansowana edycja

edytuj

Lista wyrażeń regularnych, pozwalających podmieniać wiele więcej (białe znaki, puste wiersze, enter na końcu zdania) tutaj

komenda opis
:%s/br0/eth1/g zamienia ciąg znaków br0 na eth1 w całym pliku
:#,#s/OLD/NEW/g pomiędzy liniami # i #
:%s/([0-9]+) OLD/1 NEW/g w całym dokumencie z użyciem backreferencji (trzeba poprzez „” wyescapować znaki specjalne, następnie poprzez „1” wstawić wyciągnięte dane)
g/abc/s//\='xyz_'.i/ | let i=i+1 zamienia abc na xyz_N, gdzie N to iteracja (xyz_1, xyz_2, xyz_3...)
:%s/^/\=printf('%-4d', line('.')) Operacja odwrotna od wyżej wymienionej - dodaje do każdego wyrazu numer linii na której się znajduje (zamiast abc jest 1 abc 2 acab itd.) więcej :%g/^$/d Usuwa puste wiersze

Praca w zakładkach

edytuj
przejście do ostatniej zakładki
komenda opis
:mks Zapis sesji
:tabs wyświetlenie informacjie o aktualnie otwartych zakładkach
:tabnew otwarcie pustej zakładki
:tabnew FILE otwarcie pliku FILE w nowej zakładce
:tabf FILE otwarcie pliku w nowej zakładce
:tabn przejście do następnej zakładki
gt przejście do następnej zakładki (działa w trybie NORMAL)
gT przejście do poprzedniej zakładki (działa w trybie NORMAL)
n gt przejście do zakładki o numerze n (działa w trybie NORMAL)
n gT cofnięcie się do zakładki znajdującej się w odległości n od aktualnej (działa w trybie NORMAL)
:tabp przejście do poprzedniej zakładki
:tabl przejdź do ostatniej zakładki
:tabc zamknięcie aktualnej zakładki, gdy jest jedna karta, to nie będzie zamknięta
:tabo zamknięcie wszystkich zakładek oprócz tej która jest aktualnie używana
:tabd KOMENDA wykonuje komendę na wszystkich otwartych zakładkach

Tryb wizualny

edytuj
komenda opis
v Rozpoczęcie trybu wizualnego
CTRL+V zaznaczanie całych bloków tekstu
p wkleja tekst (tekst przenosimy komendami dd lub x)
P wkleja tekst przed kursorem
y, yy, Y kopiuje tekst (yy i Y natomiast całe wiersze)
R przejście w tryb zamiany (replace)

Sprawdzanie pisowni

edytuj
komenda
:setlocal spell spelllang=pl Uruchamia sprawdzanie pisowni, w tym wypadku w języku Polskim. Jeżeli jest to pierwsze uruchomienie tego polecenia, to należy jeszcze odpowiedzieć na kilka pytań dotyczących pobrania odpowiedniego słownika.
[s przechodzimy do nastepnego błędnego słowa
]s przechodzimy do poprzedniego błędnego słowa
zg dodanie słowa do słownika
zG oznaczenie słowa jako poprawnego, zapisane w pamięci RAM
zw zignorowanie błędnego słowa
zW zdefiniowanie słowa jako błędnego, zapisane w pamięci RAM
z= Wyświetla ponumerowaną listę podpowiedzi
zug cofa dodane słowo ze słownika
zuw cofa usunięcie słowa ze słownika

Choć Vim został napisany w języku C, to normalny tryb ma możliwość obsługi znaków PERLo-podobnych. Stąd też ten podstawowy tryb posiada wbudowaną funkcję rozumienia wyrażeń regularnych. Znając ten język, jesteśmy praktycznie ograniczeni jedynie swoją własną wyobraźnią do tego, i tylko od nas zależy, do czego będziemy potrafili zaprząc Vima:

komenda
:for i in range(1,10) | put ='twoj tekst'.i | endfor Tworzy listę słów z oznakowaniem iteracyjnym. 1,10 oznacza zakres, tekst może być zastąpiony np. 127.0.0.x (gdzie x to podmiana cyfry kolejno 1, 2 itd.)

Vim wspiera także makra - czyli nic innego jak nagrany przez pogram ciąg poleceń wyklepanych na klawiaturze.

q<letter><commands>q

q uruchamia tryb makra, litera (letter) przyporządkowuje go pod konkretny klawisz w celu wywołania, komendy (commands) które makro ma przechwycić i kończymy pracę ponownie wciskając q.

qq zaczyna nagrywanie do rejestru q
... twoja złożona seria poleceń
q zakończ nagrywanie
@d uruchom swoje makro
@@ uruchom swoje makro ponownie

aby zobaczyć jakie komendy makro przechwyciło, wpisujemy

:reg <letter>

Przykład:

chcemy zmienić taki ciąg:

foo
bar

na:

foo && bar

w powłoce bash, operator && służy do łączenia poleceń, by można było wykonać jedno za drugim. Ciąg poleceń który dokonuje ww. modyfikacji:

"q   A && ^[<80>kd^i<80>kb^[A^[


Online

edytuj

offline

edytuj

Zainstaluj pakiet:

  • vim-doc
sudo apt-get install vim-doc

Strona manuala

man vi


info vi