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
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 ).