Ktoś może pomyśleć – „po co mi znajomość VIMa, przecież jest milion przyjaźniejszych dla użytkownika edytorów”. Zgodzę się, po części – jest wiele UNIX-owych edytorów tekstu posiadających interface dużo przyjaźniejszy jednak żaden z nich nie ma takich dużych możliwości jak stary poczciwy VIM, nie znam innego edytora, który z równie sprawnie i szybko edytuje pliki 200 megowe. Zresztą na niektórych serwerach (wierzcie mi, że są takie) VIM jest jedynym dostępnym edytorem tekstu.
Jako, że kiedyś sam szukałem prostego manuala z podstawowymi komedami VIMa to może komuś się przyda:
poruszanie się po dokumencie
+ – przejście do następnej linii
– – przejście do poprzedniej linii
0 – przejście do początku linii
^ – przejście do pierwszego znaku nie będącego znakiem białym w linii
$ – przejście na koniec linii
n| – przejście do kolumny n linii
} – przejście do następnego paragrafu
{ – przejście do poprzedniego paragrafu
% – przejście do otwarcia / zamknięcia nawiasu (),[],<>,{}
G – przejście na koniec dokumentu
nG – przejście do linii <n>
zapisywanie
:x lub :wq – zapisywanie pliku i wyjście
:q! – wyjście bez zapisania zmian
:w plik – zapisanie w nowym pliku „plik”
wyszukiwanie
/ STRING – szukanie do przodu
? STRING – szukanie do tyłu
n – przejście do następnego znalezionego elementu
SHIFT+n przejście do poprzedniego znalezionego elementu
kasowanie tekstu
x – kasowanie bieżącego znaku
nx – kasowanie znaków
dw – kasowanie bieżącego wyrazu
dd – kasowanie bieżącej linii
ndd – kasowanie <n> linii
D – kasowanie znaków od kursora do końca bieżącej lini
dG – kasowanie wszystkiego od kursora do końca dokumentu
edycja tekstu
o – wstawienie nowej linii poniżej bieżącej
O – wstawienie nowej linii powyżej bieżącej
i – rozpoczęcie edycji przed kursorem
I – rozpoczęcie edycji na początku bieżącej linii
a – rozpoczęcie edycji po kursorze
A – rozpoczęcie edycji na końcu bieżącej linii
cw – zastąpienie wyrazu (bieżący wyraz się kasuje, kursor ustawia się na jego początku)
cc – zastąpienie linii (bieżąca linia się kasuje, kursor ustawia się na jej początku)
kopiowanie i wstawianie
yw – kopiuj do schowka bieżący wyraz
yb – kopiuj do schowka poprzedni wyraz
Y – kopiuj do schowka bieżącą linię
nY – kopiuj następne <n> linii
p – wklej skopiowany tekst za kursorem
P – wklej skopiowany tekst przed kursorem
inne
u – cofnięcie ostatniej zmiany
U – cofnięcie wszystkich zmian w bieżącej linii
. – powtórzenie ostatniej komendy
SHIFT+# – wyszukiwanie wyrażeń pasujących do zaznaczonego
SHIFT+% – przejście do kolejnego nawiasu () lub {}
~ – zmiana litery z małej na dużą i na odwrót
zastępowanie
Można używać wyrażeń regularnych PERL- kompatybilnych
zastąpienie stringu OLD stringiem NEW
:s/OLD/NEW – pierwszego wystąpienia w bieżącej linii
:s/OLD/NEW/g – każdego wystąpienia w linii
:#,#s/OLD/NEW/g – pomiędzy liniami # i #
:%s/OLD/NEW/g – w całym dokumencie
:%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)
praca z danymi zewnętrznymi
Vim umożliwia wywołanie dowolnej komendy z poziomu edytora, można także odczytywać efekt jej działania
:! komenda – wywołanie 'komenda’ w shellu i wyświetlenie jej wyniku, komenda może być każde polecenie unixowe
:r ! komenda – wywołanie 'komenda’ w shellu i wczytanie wyniku jej działania do edytora
:r ! last | grep user – na wywoływanych komendach można robić dowolne operacje przed wczytaniem do edytora
:r textfile – wczytanie źródła pliku 'textfile’ do edytora
:r ! w3m http://en.wikipedia.org/wiki/Vi -dump – wczytanie do edytora zawartości strony internetowej
Praca z zakładkami
: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 – przejście 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
Polecam rewelacyjny VIM Tutorial.
Możliwe problemy i ich rozwiązania
- Jeżeli przy wklejaniu do konsoli kodu z tabulacjami/spacjami tworzą się niechciane wcięcia należy użyć polecenia „:set paste” następnie wkleić kod i ponownie ustawić „:set nopaste”, więcej o wklejaniu na w tym temacie stackoverflow.
Zobacz też A vim Tutorial and Primer.
klasa art. Dodalbym jeszcze info o zakladkach w vim tzn. :tabnew i przelaczanie sie za pomoca :gt, oraz dodalbym info na temat znacznikow
Pomocne, bardzo pomocne. Jak tylko jest mozliwosc rozbudowy atykulu to jestem ZA :-)
Każdą zmianę można cofnąć za pomocą u , a każde cofnięcie dzięki Ctrl + r. Jak zwykle, dozwolone jest łączenie polecenia. Na przykład cofnięcie ostatnich 20 zmian zmian to 20u.
Skróty klawiaturowe
Ctrl + p
Ctrl + n
uzupełniają pisany wyraz, na podstawie wyrażeń znajdujących się w pliku (podobnie jak Tab w shellu). Jeśli pasuje więcej niż jeden wyraz, wyświetlana jest lista propozycji
Okno główne można dowolnie dzielić w pionie i poziomie za pomocą komend
:split lub :vsplit, lub Ctrl + w + s i Ctrl + w + v.
Do przechodzenia między oknami służy Ctrl + w + , gdzie kierunek to oczywiście h, j, k lub l.
Aby skoczyć do kolejnego okna w kolejce, użyj Ctrl + w + w. W ten prosty sposób można w jednym edytorze otworzyć i przeglądać wiele plików na raz.
Kolejnym ułatwieniem o którym warto pamiętać to zakładki. Jeśli chcemy zapamiętać jakieś miejsce w kodzie, wystarczy ze je zaznaczymy za pomocą m, na przykład mk. Teraz, za pomocą 'k możemy wrócić do wiersza oznaczonego literą k.
bardzo pomocny materiał :)
Przede wszystkim brakuje opisu makr. Sam taki opis stworzyłem, dostępny jest tutaj: karolsamborski.blogspot.com.
Bardzo pomocny materiał.
Jednak również jasne wyjaśnienie dlaczego Linux nigdy nie wygra w równej i uczciwej walce z systemami Microsoft.
trzeba być po prostu nieźle pojebanym żeby znać na pamięć te wszystkie komendy.
A obsługa czegoś tak banalnego jak edytor tekstu w „dos mode” z manualem przy wykonywaniu najprostszych czynności które w systemie Windows wykona każdy kretyn jak przejścia do kolejnej linii czy kopiowaniu jednego znaku to bez uprzedzeń obiektywnie patrząc (bez opowiadania się za którymkolwiek systemem) szczyt debilizmu i napuszonego ego.
Jakby nie można wprowadzić zaznaczania Shift + strzałka i Ctrl+c i ctrl+v (kopiuj, wklej).
Trzy proste polecenia i można manipulować ich użyciem do woli. To jest genialne rozwiązanie. Zaznacz się to co się chce, w lewo w prawo, do góry na dół. Skopiuje co się chce, wklei gdzie chce. To jest potęga systemów MS.
Nie trzeba robić szkolenia żeby obsłużyć NOTEPADA w windows, lub edita w dawnym DOS.
Pozdr. Materiał na 5 :)
@Obiektywny: spróbuj wyedytować w notatniku plik tekstowy ważący kilka mega, albo i giga. Powodznia :). vim bez problemu to obsłuży.
@krzysztof ile razy edytowałeś w vim’ie plik ważący kilka giga?? i od razu podaj co to był za plik i w jakim celu go edytowałeś w vim’ie? żeby nie było że tego zadania nie można było wykonać inną technologią :)
Pracuję codziennie na systemach linuksowych w dużej korporacji i 100% mojego czasu z vim’em to edycja setek plików konfiguracyjnych z których wielkość żadnego nie przekroczyła chyba nawet 50 kilobajtów!.
Cholera mnie bierze jak dzwoni ktoś i chce coś na szybko zmienić, a ja muszę szukać manuala aby coś wyszukać czy zmienić. W MS notepad wystarcza :
Shift + strzałka i Ctrl+c i ctrl+v (kopiuj, wklej). znajdź, zamień.
Porównaj to z manualem do vim’a.
Jak mam do pracy pliki kilka giga z danymi to używam do tego np. baz danych i skryptów sql’a, a nie vim’a :)
Pozdr.
Jeszcze raz plus dla autora za manual !
@obiektywny
Słyszałeś może o edytorach nano, mcedit?
A ja mam wrażenie, że to samo jest w manie:-P Jeszcze macie dużo manuali do przepisania:-D
Niemniej życzę powodzeni:-D
Niestety poprzednicy mają rację. Linuxowe edytory to szczyt debilizmu. Właśnie walczę od pół godziny aby skopiować kawałek tekstu do pliku konfiguracyjnego, w windzie to mniej niż 5 sekund! Dlatego linux zawsze będzie niszowy czy to się komuś podoba czy nie!
Nie przesadzacie? Jak ktoś nie chce używać Vim-a czy innych edytorów tekstowych – to przecież nie musi! Zgadza się, że w N++ czy geany można coś zrobić szybciej jeśli chodzi o operacje na tekście. Nawet w nano czy pico jak ktoś chce/musi pracować w trybie tekstowym.
Ja zerkam na Vim-a dlatego, że brakuje mi w miarę prostego, ale nie bardzo prostego edytora z kolorowaniem składni, takiego w którym mogę uruchomić skrypty i widzieć efekty. Jest SciTe, ale czemu nie zerknąć na Vim-a? Wcale nie oczekuję, że będę w tym edytować pliki tekstowe – raczej ma to być lekkie IDE umożliwiające uruchamianie kodu.
Generalnie sprawdza się zasada że należy używać właściwych narzędzi do konkretnych zadań. I tyle. Chociaż znam takich, co twierdzą, że piszą raporty w Vim-ie ;), ale jeśli chcą…
Fajnie napisane, trzeba w końcu nauczyć sie używać tego vima