vim


http://dynamit.im.pwr.wroc.pl/dozzie/vim/

http://computersun.pl/linux/podstawy/vim-podstawowy-edytor-tekstu-s_96.html

Początkujący użytkownicy często niechętnie korzystają z tego programu, a wręcz go unikają. Powody są co najmniej dwa: ubogi wygląd i trudność obsługi. Bynajmniej jedno wiąże się z drugim. W programie tym nie istnieje menu takie, jak np. w mcedit, czy windowsowym notatniku - tutaj trzeba posługiwać się komendami niczym w wierszu poleceń. Komendy te trzeba oczywiście znać, ale jak się za chwilę okaże, nie jest to nic kosmicznego.

Jest jeszcze trzecia "wada" VIM'a - nieestetyczny wygląd samego tekstu. Standardowo pisząc w tym edytorze tekst nie tylko zawijany na końcu, ale i łamany. Jak się później okaże można i temu zaradzić, ale niemniej jednak uważam, że jest to typowy edytor kodu i nie nadaje się do czytania długich artykułów.

Mimo to VIM chętnie używany jest przez programistów systemów UNIX i jego odmian (także innych systemów).

0x01 graphic

Rys. 1. VIM. Możesz mi wierzyć lub nie, ale artykuł, który teraz czytasz
został napisany właśnie w VIM-ie

Trochę historii

Visual In ex

Czysty program został napisany w 1976 roku przez nijakiego Bill Joy'a (William Nelson Joy) na potrzeby systemu BSD. Edytor posiada dwa tryby pracy. Pierwszy tryb to pisanie (wprowadzanie). Drugi zaś przypomina menu graficznych edytorów, z tą jednak różnicą, że nie używamy zakładek, a wpisujemy polecenia edytora vi lub ex (otwórz, zapisz, wyjdź).

VI iMproved

W podręczniku systemowym (manual) możemy przeczytać: "vim - udoskonalony vi, tekstowy edytor programistów". Autorem programu jest Bram Moolenaar. Holenderski programista opublikował go w 1991 roku. Otrzymał on wsparcie innych programistów w trakcie tworzenia programu oraz po jego opublikowaniu. Program uważany jest za rozszerzoną wersję edytora vi, bowiem program zachował wysoki stopień kompatybilności z poprzednikiem.

Podstawowe zmiany jakie istnieją pomiędzy tymi edytorami to wielokrotne cofanie zmian (undo), gdzie VIM daje możliwość tysiąckrotnego cofnięcia, natomiast VI - jednokrotnego. Do tego VIM umożliwia przewijanie ekranu w poziomie, zwiększenie limitu długości wierszy oraz rozmiaru pliku. Ponadto rozszerzony program posiada 26 rejestrów (tzw. schowków), w których można przechowywać fragmenty tekstów. Oprócz tego program umożliwia kolorowanie składni oraz wsparcie dla narzędzi programistycznych (m.in. kompilatory, debugery).

Jako ciekawostkę warto wspomnieć, że oprócz konsolowego edytora można spotkać się z wersja graficzną - gvim. Istnieją wersje programu działające także na innych systemach, nie tylko Unix (np. Windows).

Polecenia

Jak już wspomniałem program posiada 2 tryby pracy - tryb wprowadzania, czyli pisania (VISUAL) i poleceń (NORMAL). Tryb normal z kolei umożliwia wprowadzenie dwóch typów poleceń: polecenia vim (w tym vi) oraz ex.

W trybie wizualnym widzimy i bezpośrednio modyfikujemy tekst. W trybie poleceń możemy zmodyfikować tekst nie patrząc na niego (np. zamienić dowolny wyraz na inny).

Standardowo po otwarciu programu zostaniemy poczęstowani trybem NORMAL (polecenia). Aby przejść do pisania możemy użyć klawisza [a] (ang. append - dopisywanie za lub przed znakiem, dosł. dołączać) lub [i] (ang.  insert - wstawianie, nadpisywanie wyrazów, dosł. wkładać) - często w edytorach graficznych możemy wywołać te dwa tryby klawiszem [Insert] na klawiaturze.

Aby powrócić do poleceń wciskamy [ESC].

Polecenia ex:

Polecenie ex

Opis

:q

Wyjście z programu, jeśli zapisano zmiany (quit)

:q!

Bezwzględne wyjście z programu

:w

Zapis (write)

:w nowa_nazwa

Zapisuje plik pod inną nazwą

:e nazwa_pliku

Edytuje plik o podanej nazwie

:help

Pomoc programu - otwiera plik help.txt (warto zerknąć)

Aby usprawnić pracę możemy połączyć niektóre polecenia, np. :wq (zapis i natychmiastowe wyjście).

Znając powyższe polecenia można już śmiało używać VIM'a.

Polecenia vi:

Polecenie vi

Opis

ZZ

Zapis oraz wyjście (to samo co w ex - :wq)

l (małe "L")

Kursor w prawo (o jeden znak)

h

Kursor w lewo (j/w)

k

Kursor w górę (j/w)

j

Kursor w dół (j/w)

b

Kursor o słowo w lewo

w

Kursor o słowo w prawo

0 (cyfra zero)

Przenosi kursor na początek wiersza

$

Ustawia kursor na końcu wiersza

a

Tryb wprowadzania z dopisywaniem (ang. append)

i

Tryb wprowadzania z nadpisywaniem (ang. insert)

x

Usuwa znak - standardowo ten, który jest podświetlany kursorem

W niektórych przypadkach można polecenie poprzedzić liczbą, która będzie oznaczała ilość powtórzeń wykonania polecenia. Przykładowo polecenie: 15l będzie oznaczać przesunięcie kursora w prawo o 15 znaków, lub 15x - usunięcie kolejnych 15 znaków.

Jak na razie wymieniłem tylko przykładowe polecenia dla ex oraz vi. Jak widać nie są wcale trudne i można łatwo je zapamiętać.

Polecenia vim też nie powinny sprawiać specjalnych kłopotów...

Polecenia vim

W związku z tym, że vim jest w wysokim stopniu kompatybilny z edytorem vi jego podstawowe polecenia nie ulegają zmianie. W każdym razie vim posiada szereg nowych, których vi już nie ma.

Poniżej znajdują się oczywiście najbardziej przydatne polecenia w skróconej formie. Aby dowiedzieć się pełnej nazwy polecenia wystarczy wpisać: :h nazwa_polecenia

Tryb NORMAL

Polecenie

Opis

ga

Wartość znaku spod kursora w ASCII (w postaci dziesiętnej, szesnastkowej i ósemkowej)

g8

Jak wyżej tylko, że dla kodowania UTF-8

50%

Skok o połowę pliku (w %)

100go

Wykonuje skok do setnego bajtu pliku

15G

Wykonuje skok do 15-go wiersza

g ctrl+g

Informacje na temat położenia kursora, tj. kolumna, wiersz, słowo i bajt (np. Kol 5 z 18; Wiersz 1 z 1; Słowo 1 z 1; Bajt 5 z 19)

q:

Wyświetla historię poleceń trybu ex

Sex w trybie ex

Czyli polecenia, które zawierają przynajmniej jedną literę wyrazu "sex".

Polecenie

Opis

:Sex

Otwiera okno wyświetlające zawartość bieżącego katalogu (ang. Split file EXplore)

:as

To samo co polecenie ga trybu NORMAL

:se wrap | se nolist | se lbr

Zawijanie wierszy na granicy słowa (słowo nie będzie przerywane)

:se noma

Blokada pliku (bufora) przed modyfikacją

:se ff=unix

Wymuszenie uniksowego, pojedynczego znaku końca wierszy (spod dowolnego systemu)

:se is | se hls

Podświetlenia znaków spełniających warunki wyszukiwania wyszukiwania

:se vb

Włącza sygnał optyczny (ang. visual bell) w miejscu sygnału akustycznego

:sp file_name

Otwiera nowe okno edycji w poziomie

:vsp file_name

Jak wyżej, ale w pionie

:syntax on

Podświetlanie składni danego języka (język programowania może być rozponany przez rozszerzenie nazwy pliku, np. nazwa.cpp)

:se syn=css

Wymuszenie podświetlania składni wg. reguł języka CSS2 (gdy rozszerzenie nie oddaje zawartości - np. .txt zamiast .css)

Za pomoca poleceń trybu ex możemy ułatwić sobie proces edycji pliku...

:%s/tekst aktualny lub wyrażenie regularne/nowy tekst lub

Polecenie to umożliwia zamiane jednego wyrazu na drugi. Znak procentu oznacza, że polecenie ma dotyczyć całego tekstu w pliku. Ukośniki służą za separatory poleceń, litera g oznacza wykonywanie polecenia aż zostanie napotkana granica zakresu (w tym wypadku EOF - koniec pliku), natomiast litera c włącza tryb potwierdzeń "krok po kroku" dla wykonywanego polecenia w przypadku spełnionego kryterium wyszukiwania

- jeżeli nie użyjemy c polecenie zostanie wykonane całe automatycznie!

Zapamiętaj, że pierwszy wyraz jest wzorem zamienianym na drugi, a nie odwrotnie (czyli zamieniasz coś / coś_innego).

Napisałem, że ukośniki [/] są separatorami. A co zrobić, jeśli chcemy zamienić ukośniki występujące w tekście? Poprostu poprzedzamy ukośnik backslashem [\], czyli jako argument do zamiany wpisujemy nie / tylko: \/

- i tak możemy robić w obie strony.

Ponadto możemy napotkać inne problemy ze znakami tego typu (mającymi znaczenie w składni polecenia) - jeżeli występują takie w tekście i chcemy je zamienić to również poprzedzamy je backlslashem.

Przykładowo, jeżeli w tekście zamieniamy \n na coś innego to w tym poleceniu wpisujemy \\n.

Możemy oczyścić ładnie tekst z tagów HTML:

:%s/<[^>\n]*>//g

Polecenie wycina wszystko co się zaczyna od "<" i kończy na ">" włącznie - nawet, jeśli tag przeciąga się na kilka nowych wierszy.

Zamiast nawiasów, trójkątnych możemy wstawić dowolne inne, wtedy zamiast tagów HTML wytniemy to co jest w tych nawiasach. Oczywiście, jeśli dla ostrożności chcesz wybrać tryb potwierdzeń dodaj na końcu c.

Pamiętaj, że polecenie ma na końcu 2x [ / ]. Dlaczego? Ponieważ całe to polecenie oznacza zamianę wszystkiego co znajduje się pomiędzy nawiasami trójkątnymi na to co jest pomiędzy tymi dwoma ukośnikami - można tam wstawić spację albo inny wyraz lub znak.

A w następujący sposób usuwamy puste wiersze:

:g/^\s*$/d

W ten sposób wiersze, które nie zawierają żadnego znaku zostaną usunięte i tekst będzie linijka pod linijką.

VIM i kodowanie

Poniższe polecenia ustawiają kodowanie znaków (bardzo przydatne, jeżeli piszemy po polsku i nie chcemy narazić się na "krzaczenie").

Polecenie

Opis

:se enc=iso-8859-2

Vim będzie kodował znaki w standardzie ISO

:se tenc=utf8

Informuje vim-a, że na konsoli obowiązuje kodowanie Unicode (UTF-8)

- można ustawić też inne kodowanie podając odpowiedni rodzaj (np. iso-8859-1)...

Konfiguracja VIM-a

VIM jest programem, który można dostosować do swoich preferencji. Można zmienić w nim wiele rzeczy, np. włączyć podświetlanie składni, ustawić długość tabulacji czy nadać kolory, itd...

Poniżej znajduje się lista poleceń, które można wpisać, albo w trybie ex (poprzedzając je dwukropkiem), albo w pliku konfiguracyjnym (plik konfiguracyjny dla systemów GNU/Linux i Unix nosi nazwę .vimrc i powinien znajdować się w /home/nazwa_uzytkownika/, natomiast dla systemów Microsoftu plik ten nosi nazwę mu_vimrc.

Polecenie

Opis

syntax on

podświetlanie składni języka programowania

set textwidth=n

ustawia długość wiersza na n znaków

set noet ts=n sw=n

ustawia długość tabulacji na n znaków (białych)

set autoindent / noautoindent

włącza / wyłącza auto-wcięcia

set incsearch

wyszukuję ciąg w trakcie wpisywania wzorca (literka po literce)

set number

numerowanie wierszy

set ruler

statystyki

set nocompatible

wyłącza kompatybilność z edytorem vi

set backspace=ident,eol,start

zawija tekst przy końcu wiersza

set backupdir=/katalog/backupy

określa katalog dla kopii bezpieczeństwa

set backup

robi kopię zapasową

let g:html_use_css="1"

korzystanie ze styli CSS dla plików HTML

W niektórych przypadkach anulowanie ustawionej opcji, można wykonać poprzez poprzedzenie nazwy przedrostkiem no, np. set noautoindent czy set nonumber. W odpowiednio innych przypadkach należy wartośc ustawić na 0...

Wiecej o konfigurowaniu i pliku konfiguracyjnym (dla różnych systemów) możesz przeczytać w pliku pomocy odnoszącego się do konfigu - wpisz polecenie :h vimrc.

Zaawansowani użytkownicy Linuksa mogą w pliku konfiguracyjnym zastosować także funkcje programistyczne (skrypty). Więcej na ten temat przeczytasz w pliku pomocy wpisując polecenie :help source.

Na zakończenie...

Jak widzisz edytor VIM nie jest wcale taki straszny, jaki mógłby się wydawać na na pierwszy rzut oka. Jak napisałem wcześniej - sam nie miałem co do niego pewności. Teraz używam go do wszelkich modyfikacji kodu w Linuksie. Napisałem w nim również ten artykuł. :)



Wyszukiwarka

Podobne podstrony:
2009 01 Vim – konkurent prawie doskonały! [Poczatkujacy]
advanced vim tutorial
Vim Linux
Vimںhia pra lhe ver
Eu vim pra vadiar no?rimbau
Eu vim aqui buscar
polecenia w?ytorze Vim
2009 01 Vim – konkurent prawie doskonały! [Poczatkujacy]
Edytory vi i Vim Leksykon kieszonkowy
VIM Quick Reference Card
vim prezentacja
Edytory vi i Vim Leksykon kieszonkowy evivim
Krótkie wprowadzenia do edytora VIM
Edytory vi i Vim Leksykon kieszonkowy
Vim 7
Edytory vi i Vim Leksykon kieszonkowy 2

więcej podobnych podstron