Vim dla programisty – podstawowe komendy

Jeśli szukasz darmowego edytora, który spełniałby wiele kryteriów w kontekście pracy programisty to właśnie Vim jest dla Ciebie !
To, że jest to edytor działający w trybie tekstowym wcale nie jest jego wadą ( jest też wersją „graficzna” gvim ) gdyż jest niezwykle szybki a do tego występuję praktycznie na każdej platformie. W systemach Unixowych jest standardowym edytorem ( Linux, BSD, OS X ) są oczywiście też wersje dla systemu Windows jak i dla wielu egzotycznych platform. To duża zaleta, gdyż nie jesteś uzależniony od platformy na której aktualnie pracujesz. O pracy zdalnej za pośrednictwem konsoli nawet nie wspominam, bo tam trudno wyobrazić sobie coś lepszego od Vima ( jedyny konkurent to w zasadzie Emacs ). Umiejętne korzystanie z Vima to przede wszystkim znajomość komend tekstowych i kombinacji klawiszy. Vim jest całkowicie elastyczny, można go dostosować do własnych potrzeb, ma ogromną ilość pluginów i opcji, dzięki którym może być pełnoprawnym IDE.

Podstawy

Edytor vim uruchomiamy w konsoli jakżeby inaczej wpisując nazwę programu:

vim __NAZWA_PLIKU__

Nazwa pliku jest opcjonalna.
Jeśli nie podamy nazwy pliku, vim uruchomi się ze stroną tytułową. Aby cokolwiek wpisać należy przełączyć go w tryb: wprowadzania wciskając klawisz: I. Klawiszem ESC wychodzimy z trybu wprowadzania tekstu i jesteśmy w trybie wprowadzania vimowskich komend. To są najczęściej wykorzystywane skróty klawiszowe w vimie.

Istnieje także samouczek vima dla początkujących i nie tylko:

vimtutor
Vim Tutorial czyli Vimowski Samouczek

Vim Tutorial czyli Vimowski Samouczek

Podstawowe Komendy Edytora Vim

Pamiętaj o przełączaniu się pomiędzy trybami ! Tryb wprowadzania tekstu/edycji – klawisz I i tryb wprowadzania komendy: ESC ! Komendy zaczynają się od znaku dwukropka: „:”.

+ Podstawowe Komendy

Komenda: Działanie:
: wprowadzanie komend
:e otwarcie pliku
:w zapis aktualnie otwartego pliku
:wq zapisanie i wyjście
:q! wyjście bez zapisywania
:bn przejście do kolejnego otwartego pliku (bn: bufor next)
:bp przejście do poprzedniego pliku (bp: bufor previous)
:tabe [nazwa_pliku] otwarcie pliku [nazwa_pliku] w zakładce
:tabnew utworzenie nowej zakładki – bez tworzenia pliku
:tabclose zamyka aktualną zakładkę
:tabn przechodzi do następnej zakładki
:tabp przechodzi do poprzedniej zakładki
:/[fraza] wyszukuje w tekście poszukiwaną frazę
:! [nazwa_programu] uruchamia program, np: gcc, php, g++, etc.
:! [nazwa_programu] % uruchamia program z parametrem, gdzie % oznacza bezwzględną ścieżkę do bieżącego pliku. Na przykład: :!php % – uruchomi w konsoli interpreter PHP wraz z aktualnie edytowanym plikiem. A jeśli chcemy skompilować i uruchomić program np. w C/C++ to: !gcc % && ./a.out . Strzałki „góra/dół" tak jak w bashu pokazują historię poleceń
:%s/[znajdz]/[zastap]/g zastępuje jeden ciąg [znajdz] drugim ciągiem [zastap] we wszystkich wierszach
:[NUM] przechodzi do linii określonej numerem [NUM]. Na przykład: :50 – kurs przejdzie do linii nr 50

+ Edycja dokumentu

Komenda: Działanie:
i tryb wstawiania –INSERT– ( pisanie tekstu )
ESC : tryb do wpisywania komend
ESC tryb NORMAL ( w tym trybie wywołujemy instrukcje dla vima poprzez wciskanie odpowiednich klawiszy )
j przesuwa kursor w dół ( może być strzałka „w dół" )
k przesuwa kursor w górę ( może być strzałka „w górę" )
h przesuwa kursor w lewo ( może być strzałka „w lewo" )
l przesuwa kursor w prawo ( może być strzałka „w prawo" )
x usuwanie prawostronne znaku wskazywanego kursorem
X usuwanie lewostronne znaku wskazanego kursorem
A przesuwa kursor na koniec linii i przechodzi w tryb wstawiania
w kursor przeskakuje na następny wyraz ( przejście na następny wyraz )
b kursor przeskakuje na poprzedni wyraz
o przejście na początek wiersza i przeskok do następnej linii
$ przejście na koniec wiersza
dw usunięcie całego wyrazu ( nakieruj kursorem na wyraz i wciśnij najpierw klawisz „d" później „w" )
d$ skasowanie wszystkich wyrazów od położenia kursora do końca linii
dd skasowanie całej linii
u polecenie „undo" czyli cofnięcie ostatniej instrukcji
% przesuwa kursor do znaku określającego otwarcie/zamknięcie np. jakiegoś bloku. Dotyczy znaków – nawiasów: „([{}])". Czyli idealnie nadaje się dla programistów. Na przykład ustaw kursor na znak „{" wciśnij „%" a kursor przeskoczy na znak zamykający blok – w tym wypadku „}" i vice versa. Sprawdza się także w innych typach definiujących bloki: „/* */", „#if, #ifdef, #else, #elif, #endif" i „begin, end".
r[ZNAK] zastępuje znak wskazany przez kursor na znak [ZNAK]. Na przykład: kursor na pierwszej literze wyrazu „gala" wciskamy rs i uzyskujemy wyraz „sala"
ce zamień ( usuń ) znaki w wyrazie, nowe znaki wstawiane są licząc od pozycji kursora. Na przykład wyraz „prog#$2", ustawiamy kursor na literkę „#" wciskamy ce zostają usunięte znaki licząc od „g" do końca wyrazu.
G przenosi kursor na koniec pliku
gg przenosi kursor na początek pliku
v włącza zaznaczanie fragmentu tekstu ( podświetla ). Po włączeniu opcji w lewym dolnym rogu pojawi się napis/tryb: –VISUAL–. Zaznaczenie wybranego fragmentu ustalamy klawiszami „strzałkami" lub klawiszami do sterowania kursorem „hjkl". Poniżej 3 instrukcje operujące na zaznaczonym tekscie: wycięcie, skopiowanie i wklejanie.
d wycięcie zaznaczonego fragmentu / regionu tekstu
y skopiowanie zaznaczonego fragmentu tekstu do schowka
p wklejenie zaznaczonego tekstu ze schowka
[NR][INST] gdzie [NR] to liczba określająca ile razy powtórzyć daną instrukcję [INST], np. 2dd – usuwa dwie linie, 3j – przestawia kursor 3 pozycje wyżej.

+ Komendy konfigurujące środowisko Vima

Komenda: Działanie:
:syntax on włącza podświetlanie składni
:syntax off wyłącza podświetlanie składni
:set background=[color] dopasowywuje kolory pod tło. Jeśli posiadasz czarne tło a kolory zlewają się w tle wystarczy wpisać :set background=dark
:set number włącza numeracje wierszy
:set mouse=a włącza obsługę myszki ( dla systemu OS X kliknięcie wymaga użycia skrótu klawiszowego: ALT + CLICK )
:set nonumber wyłącza numerowanie wierszy
:set ruler włącza status kursora, pokazywany w prawym dolnym rogu. Pokazuje numer linii, kolumny jak i relatywną pozycje kursora w wyrażoną w procentach
:set noruler wyłącza status kursora
:set filetype=[jezyk_programowania] jeśli vim operuje na pliku, który jeszcze nie został utworzony ( musi mieć odpowiednie rozszerzenie ), możemy wymusić podświetlanie stosownie do używanego aktualnie jeżyka programowania, np: set filetype=php
:set autoindent włącza automatyczne wcięcia wierszy
:set noautoindent wyłącza wcięcia
:set title włącza pokazywanie w pasku tytułu ( jeśli terminal jest uruchomiony w środowisku graficznym ) nazwę aktualnie edytowanego pliku
:set notitle usuwa nazwę aktualnie edytowane pliku z paska tytułowego
:set hlsearch włącza podświetlanie znalezionego ciągu tekstowego
:set nohl wyłącza podświetlanie znalezionego ciągu
:set incsearch włącza wyszukiwania przyrostowego
:set noincsearch wyłącza przeszukiwanie przyrostowe

+ Skróty klawiszowe

Skrót klawiszowy: Działanie:
CTRL + G pokazanie lokalizacji pliku i statusu kursora
CTRL + N uzupełnianie tekstu, czyli podpowiadanie do pasujących ciągów tekstowych użytych przynajmniej jeden raz w pliku. Może być przydatne np. do podpowiadania składni danego języka
[LICZBA] + J przesuwa kursor w dół o odpowiednią ilość lini np.: 5j przestawi kursor o 5 linii w dół

Stała konfiguracja Vima

Wprowadzanie każdorazowo komend konfigurujących środowisko Vima może dość frustrujące. Oczywiście Vim umożliwia ustawienie wybranych przez użytkownika opcji na stałe – tj. podczas każdorazowego uruchamiania Vima mamy swoją własną konfigurację.
Aby Vim miał stałą – domyślną konfigurację ustaloną przez użytkownika, należy utworzyć odpowiedni plik konfiguracyjny w katalogu użytkownika np.:

vim ~/.vimrc

Teraz już możemy wprowadzić swoje własne wybrane opcje konfiguracyjne, dzięki którym vim każdorazowo będzie je aktywował podczas uruchamiania. Komentowanie wybranych opcji wymaga użycia znaku cudzysłowia: .
Przykładowa plik konfiguracyjny:

syntax on
set autoindent
set encoding=utf-8
set mouse=a                      " dla OSX wcisnąć: ALT i kliknać
set number
set hlsearch
set incsearch
map  :!gcc %./a.out  " podczepianie komendy pod klawisz F5

Podsumowanie

Edytor VIM tak jak wcześniej już wspomniałem daje duże możliwości programistom poprzez moduły / pluginy, które można zainstalować i dostosować środowisko do własnych potrzeb. Są osoby dla których VIM może być uznany jako najlepsze IDE na OS X czy innych systemów ( Linux, Unix, Windows ) – bo przecież edytor jest wielo-platformowy. W wielu systemach operacyjnych jest standardowym edytorem dla konsoli. Oczywiście modularność Vima, jego lekkość i wszechobecność na różnych platformach to niewątpliwe plusy, jednak przemyślany choć dość nietypowy jak na dzisiejsze standardy interfejs tekstowy to chyba paradoksalnie największy plus tego edytora. Osoba, która opanuje vimowskie komendy i skróty, będzie miała edytor w którym szybkość pisania kodu jest niezaprzeczalna. Co ciekawe, nawet jeśli korzystamy z innych edytorów nauka vimowskich komend i skrótów klawiszowych nie pójdzie w las i może się przydać w „ciężkich” graficznych IDE takich jak: NetBeans, Eclipse, PHPStorm i inne ( najczęściej wystarczy zainstalować odpowiednie pluginy ).

Dodaj komentarz