Filozofia Vima - tryby i pliki

7 min read

D艂ugo przymierza艂em si臋 do napisania tego artyku艂u, kt贸ry mia艂by za zadanie nauczy膰 i zach臋ci膰 do poznania Vima. Moja prokrastynacja wynika艂a z niezliczonych mo偶liwo艣ci jakie daje te narz臋dzie. Po kilku latach u偶ywania tego edytora nadal ucz臋 si臋 nowych rzeczy. Na pocz膮tku przygody z Vimem, dokumentacja lub darmowa ksi膮偶ka mo偶e by膰 przyt艂aczaj膮ca. Warto natomiast pozna膰 koncepcje na jakich zosta艂 oparty edytor, i w czasie potrzeby zg艂臋bia膰 wiedz臋, spogl膮daj膮c w instrukcj臋 (:help). Dla os贸b kt贸re szybko si臋 nudz膮 powsta艂y gry do nauki jak vim adventures i vim genius. Bardzo dobrym 藕r贸d艂em wiedzy jest dost臋pna wraz z programem dokumentacja - vimtutor i strona z poradnikami wideo vim casts.

vim-curve Dlaczego zatem uczy膰 si臋 edytora, kt贸rego korzenie si臋gaj膮 1976 roku? Odpowiedzi jest kilka w zale偶no艣ci od zapotrzebowania. Najwa偶niejsz膮 cech膮 wg. mnie jest efektywno艣膰. Vi (protoplasta Vim), by艂 napisany w czasach, gdy interfejsy graficzne nie by艂y popularne. Ca艂膮 manipulacj膮 dokumentu, trzeba by艂o wykonywa膰 przy pomocy klawiatury. Obs艂uga programu przez sam膮 klawiatur臋 ma sens dzisiaj, poniewa偶 u偶ywanie myszki komputerowej jest nieoptymalne oraz bardziej nara偶a nasze nadgarstki na urazy. Program ten jest bardzo lekki (zajmuje ok. 10 MB), dzi臋ki czemu mo偶emy go znale藕膰 prawie na ka偶dej instalacji Linuksa. Po偶era te偶 ma艂o RAMu, szybko si臋 otwiera nawet przy gigantycznych plikach tekstowych. 艁atwo艣膰, du偶a mo偶liwo艣膰 konfiguracji oraz zbi贸r plugin贸w pozwala nam na dostosowanie edytora do naszych potrzeb. Vim posiada du偶o zaawansowanych opcji, kt贸re u艂atwi膮 nam pisanie tekstu i oszcz臋dzaj膮 czas. Niestety, aby skorzysta膰 z tych benefit贸w musimy pozna膰 podstawy dzia艂ania, kt贸re s膮 inne ni偶 w typowych edytorach.

W tym artykule jak i nast臋pnym przybli偶臋 filozofi臋 dzia艂ania Vima. Uwa偶am, 偶e to lepsza nauka ni偶 pr贸ba uczenia si臋 skr贸t贸w w losowej kolejno艣ci. B臋d臋 si臋 pos艂ugiwa膰 konwencjami z Vima, t艂umacz膮c jego zawi艂o艣ci. Znak c- oznacza膰 b臋dzie klawisz Control, dwukropek : komend臋 w trybie Command-line. W nawiasach okr膮g艂ych () b臋d膮 nazwy angielskie u偶ywane przez Vima, natomiast nawiasy {} b臋d膮 zawiera膰 przyk艂adowe parametry.

Tryby pracy

Esc-key Vim posiada jedena艣cie tryb贸w pracy poza zwyk艂ym jakim jest wpisywanie tekstu (Insert mode). Niech ta liczba Was nie przera偶a, poniewa偶 niekt贸re z nich s膮 podobne do siebie i ma艂o u偶ywane. Jak uruchomimy Vima to wejdziemy w tryb normalny (Normal mode). Pozwala on nam na edytowanie tekstu oraz jest punktem startowym to wszystkich innych funkcji. Prawdopodobnie st膮d powsta艂 kawa艂 zwi膮zany z trudno艣ci膮 wyj艣cia z edytora.

  • Normal mode - pozwala nam w 艂atwy spos贸b edytowa膰 tekst poniewa偶, ka偶dy klawisz w tym trybie mo偶e by膰 skr贸tem klawiszowym. Z tego miejsca mo偶emy dosta膰 si臋 do wszystkich innych tryb贸w. Jak chcemy napisa膰 tekst musimy wej艣膰 w tryb Insert przez:

    • i, a - stawia kursor przed pod艣wietlonym znakiem, a za znakiem

    • I, A - stawia kursor na pocz膮tek paragrafu, A na koniec

    • o, O - stawia kursor pod edytowan膮 lini膮, O nad ni膮

  • Insert mode - zachowuje si臋 jak zwyk艂y edytor tekstowy, ka偶dy naci艣ni臋ty znak pojawia si臋 jako tekst. Nie znaczny to, 偶e nie mo偶na w nim u偶ywa膰 zwyk艂ych skr贸t贸w klawiaturowych np. z Controlem. Chc膮c przej艣膰 do Normal mode nale偶y u偶y膰 Esc, Ctrl+c lub Ctrl+[. U偶ywaj膮c Ctrl+p i Ctrl+n mo偶emy aktywowa膰 autouzupe艂nianie i porusza膰 si臋 w oknie dialogowym.

  • Visual mode - jest podobny do Normal mode, kt贸ry pozwala nam na zaznaczanie tekstu, ma trzy warianty. Poni偶ej prezentuje skr贸t klawiszowy informuj膮cy jak przej艣膰 do niego z Normal mode:

    • v - precyzyjne zaznaczanie tekstu znak po znaku

    • V - zaznacza ca艂e linie

    • c-v - zaznaczanie blokowe

  • Command-line mode - pozwala nam wywo艂ywa膰 komendy wpisuj膮c jej nazw臋 po dwukropku np. :start (przej艣cie do trybu Insert). Natomiast znaki / i ? s艂u偶膮 do wyszukiwania tekstu. Ciekawostk膮 jest mo偶liwo艣膰 wywo艂ywania komend pow艂oki systemowej. Poprzedzaj膮c poleceniem bashowym wykrzyknikiem np. !ls, wy艣wietlimy list臋 plik贸w w bie偶膮cym katalogu. U偶ywaj膮c uzupe艂nienia c-d, mo偶emy zobaczy膰 pasuj膮ce polecenia.

  • Replace mode - w trybie Insert przejdziemy do niego wciskaj膮c przycisk insert, zachowanie tego trybu jest takie same jakby艣my zrobili to samo w LibreOffice. Do trybu podmieniania znak贸w mo偶emy te偶 przej艣膰 z Normal mode klawiszem R.

exit from vim

To nie s膮 wszystkie tryby pracy, lecz najwa偶niejsze. Szczeg贸lnie w trybach Normal i Insert b臋dziemy sp臋dza膰 najwi臋cej czasu. Visual mode powinni艣my unika膰. Lepiej nauczy膰 si臋 u偶ywa膰 efektywniej metod skakania po tek艣cie w normalnym trybie. Wi臋c jak wyj艣膰 z Vima? 馃槈 "To zale偶y" - jakby to odpowiedzia艂 dobry adwokat. W r贸偶nych trybach mo偶na zrobi膰 te same operacje i to od nas zale偶y jaki spos贸b b臋dzie wygodniejszy w danej sytuacji. Po drugie, istnieje du偶o alias贸w robi膮cych to samo. Przyk艂adowo w normalnym trybie wyj艣膰 z Vima mo偶na na kilka sposob贸w:

  • :wq, :x lub ZZ - zapisanie i wyj艣cie

  • !q lub ZQ - wyj艣cie bez zapisywania

  • :qa - zamkni臋cie wszystkich otwartych plik贸w

Zak艂adki

Przy d艂ugim dokumencie mo偶emy ustawia膰 zak艂adki, i szybko przeskakiwa膰 pomi臋dzy nimi. Zak艂adkom mo偶na nadawa膰 jednoliterowe tagi - od a do z (i A-Z). Odwo艂ujemy si臋 do nich przez klawisze ' lub ` (gravis). Pierwszy znak to linia, gdzie znajduje si臋 zak艂adka, druga pozwoli nam przeskoczy膰 te偶 do konkretnej kolumny w tek艣cie. Mo偶emy u偶ywa膰 ich zamiennie w zale偶no艣ci od potrzeb.

  • mx - tworzy zak艂adk臋 w tek艣cie o nazwie x

  • 'x - przej艣cie do zak艂adki x

  • [', ]' - poprzednia, nast臋pna zak艂adka

  • d鈥檃 - usuwa zak艂adk臋

  • :marks - pokazanie wszystkich znacznik贸w

  • :delmarks a-c - usuni臋cie zak艂adek od a do c

  • . - skok do ostatnio edytowanej linii

  • '' - przechodzenie do poprzedniego miejsca, z kt贸rego skoczyli艣my

Je艣li nie b臋dziecie chcieli zapami臋tywa膰 jakie litery nadali艣cie swoim zak艂adkom, to proponuj臋 zainstalowa膰 plugin vim-bookmarks.

Pliki i karty

Vim dostarcza nam kilka narz臋dzi do zarz膮dzania plikami. Pierwsze jakie chcia艂em opisa膰 to podzia艂 ekranu. Jak chcemy podzieli膰 okno horyzontalnie na dwie cz臋艣ci to w Command-line mode musimy wpisa膰 :split lub tylko :sp. Analogicznie do podzia艂u wertykalnego u偶yjemy komend :vsplit lub :vs. Dzieli膰 ekran mo偶emy kilkukrotnie, wa偶ne, jednak na jakim oknie aktualnie si臋 znajdujemy. Polecenie :resize 90 ustawi nam szeroko艣膰 okna na 90 kolumn, natomiast :vertical resize 80 na 80 wierszy.

  • c-w w lub c-w c-w - prze艂膮cza okna z jednego okna na drugie

  • c-w j, c-w k, c-w h, c-l - odpowiednio prze艂膮cza na okno dolne, g贸rne, lewe i prawe. Zamiast hjkl mo偶na u偶ywa膰 strza艂ek

  • c-w +, c-w - - zwi臋ksza, zmniejsza rozmiar okna w uk艂adzie horyzontalnym

  • c-w >, c-w < - zwi臋ksza, zmniejsza rozmiar okna w uk艂adzie wertykalnym

  • c-w _ - maksymalizuje okno

  • c-w = - ustawia okna na takie same rozmiary split windows

Karty

Dodatkowo Vim wspiera karty, dzi臋ki czemu mo偶emy mie膰 otwarte kilka dokument贸w.

  • :tabnew - stworzenie pustej karty

  • :tabclose - zamkni臋cie aktualnej karty

  • :tabnext, gt - przej艣cie do nast臋pnej karty

  • :tabnext, gT - przej艣cie do poprzedniej karty

  • :tabfirst, :tablast - przej艣cie do pierwszej, ostatniej karty

Manager plik贸w

Instalacja Vima zawiera plugin netrw, kt贸ry jest przegl膮dark膮 plik贸w. Dzi臋ki niej mo偶emy zarz膮dza膰 plikami i katalogami.

  • :E lub :Explore - otwiera list臋 plik贸w w katalogu, gdzie znajduje si臋 otwarty plik

  • :Se lub :Sexplore, (Sex te偶 dzia艂a 馃槈) - otwiera przegl膮dark臋 w podziale horyzontalnym

  • :Vex lub :Vexplore - otwiera przegl膮dark臋 w podziale wertykalnym

  • i - prze艂膮cza mi臋dzy r贸偶nymi trybami wy艣wietlania listy plik贸w (lista, szczeg贸艂y, drzewo)

  • s - sortuje pliki

  • R - zmienia nazw臋 pliku lub katalogu

  • D - usuwa plik lub katalog

  • d - tworzy nowy katalog

  • % - tworzy nowy plik w bie偶膮cym katalogu (zapyta o nazw臋)

  • e - otwiera plik w bie偶膮cym oknie

  • o, v - otwiera plik w poziomo o lub pionowo v podzielonym oknie

Jest to pierwsza cz臋艣膰 dotycz膮ca podstaw w u偶ywaniu najlepszego na 艣wiecie edytora tekstowego. Nie b臋d臋 na razie opisywa膰 takich funkcji jak zwijanie i por贸wnywanie napis贸w, bufory, makra i pod艣wietlanie kodu. Warto jednak wiedzie膰, 偶e takie funkcje s膮 dost臋pne. Zapraszam jednak do przeczytania drugiej cz臋艣ci. Opisuj臋 w niej najwa偶niejsz膮 (i trudniejsz膮) funkcj臋 jak膮 maj膮 edytory tekstowe. Tak zgadli艣cie m贸wi臋 o manipulowaniem tekstu. :D

madness