czwartek, 24 lutego 2011

Warte zapamiętania komendy edytora Vim

Podobno informatycy dzielą się na tych co używają Emacs'a, na tych co używają Vim'a, oraz na tych, którzy jeszcze nie poznali dobrego edytora tekstów, przez co używają kompletnie nieprzydatnych "rozwiązań" buraków z Richmond. Ten, kto nie wie o czym mowa niech nie czyta dalej. To nie dla niego.

Osobiście preferuję Vim'a. Prędkość edycji tekstu w tym edytorze oszałamia. Jest kilka komend, które znacząco przyspieszają pracę. Wybrałem najczęściej używane przeze mnie.

Rejestry
"ay zapis (yank) zaznaczonego tekstu do rejestru a (zamiast "a" można użyć dowolnej litery)
"Ay dopisanie do rejestru a zaznaczonego tekstu. Doładowanie go.
"ap wstawienie tekstu na miejsce kursora z rejestru a (zamiast "a" można użyć dowolnej litery)
"* register (rejestr) zawierający clipboard
"*y zapis zaznaczonego tekstu do clipboardu
"*p wklejenie z clipboardu w miejsce kursora

Makra
qa start rejestracji makra w rejestrze a (zamiast "a" można użyć dowolnej litery)
q stop rejestracji makra (oczywiście nie w modzie edycji tylko w modzie komend)
@a uruchomienie makra z rejestru a (zamiast "a" można użyć dowolnej litery)

Marki - rzecz zawodowa
`` dwa apostrofki (pod tyldą) powrót do ostatniego postoju kursora
ma markuje miejsce kursora znacznikiem "a" (zamiast "a" może być dowolna litera)
`a skok z miejsca aktualnego kursora da zamarkowanego wcześniej miejsca "a"
`[ początek ostatnio edytowanego tekstu
`] koniec ostatnio edytowanego tekstu
:marks pokazuje wszystkie zamarkowane miejsca

% jeśli się stoi na nawiasach to skacze z początku na koniec i odwrotnie
* zaznacza słowo, na którym się stoi i wrzuca to do szukania (cudowne)

fajne są komendy z literką "z" do poruszania ekranu:
z linia z kursorem znajdzie się na górze
z. na środku
z- na dole
analogicznie działają:
zt top
zz środek
zb bottom

:nohlsearch jeśli Cię wkurzaja podświetlenia ostatniego wyszukiwania (następne wyszukiwanie elegancko powraca do podświetlania)

Gdy się jest w modzie Visual (literka "v") to literki "o" i "O" skaczą na początek i na koniec zaznaczenia. Łatwo dzięki temu poszerzać zaznaczenie.

Zmiana wielkości liter:
~ (tylda) zamienia małe na duże i odwrotnie
U na duże (tylko w zaznaczeniu)
u na małe (tylko w zaznaczeniu)
gu na małe np. guw zmieni na małe całe słowo
gU na duże np. gUw zmieni na DUŻE całe słowo
guu na małe całą linię
gUU na duże całą linię

> wcinka dla całego bloku tekstu (tylko w Block Visual "Ctrl-V")
< likwidacja wcinki dla całego bloku tekstu (tylko w Block Visual "Ctrl-V") 


Zmiana tekstu w całym pliku:
%s/stary_tekst/nowy_tekst/g 

Obsługa nie po polsku brzmiących foldów czyli składania i rozkładania kodu, żeby nie przeszkadzał w poruszaniu się po tekście 
zf utworzenie folda z zaznaczonego tekstu 
zj skok do następnego folda (jak ruch kursorem) 
zk skok do poprzedniego folda (jak ruch kursorem) 
zo otwiera (open) fold pod kursorem 
zO otwiera wszystkie zaznaczone foldy 
zc zamyka (close) fold 
zd kasuje fold pod kursorem 
:mkview zapisanie swoich foldów dotyczących tego pliku 
:loadview odtworzenie zapisanych foldów 

Arcyirytujące było dla mnie to, że kiedy wchodziłem w tryb edytora Ex (dla niewtajemniczonych dodam, że jest to mod po naciśnięciu ":" dwukropka) to nie mogłem użyć zawartości bufora czyli wkleić tego co tam sobie siedziało. 
Oczywiście jest to możliwe: 
Ctrl-R-" wklejenie z domyślnego bufora 
Ctrl-R-a wklejenie z bufora o nazwie a do linijki Ex 
Kontynuując ten wątek to wszystkie problemy rozwiązuje wejście w tryb Command-line: 
Ctrl-F - z trybu Command czyli juz po naciśnięciu: 
q: - z trybu Normal (szczegóły na :help q:
:tabnew nazwa_pliku otwarcie pliku w nowej zakładce 
:tabn następna zakładka 
:tabp poprzednia zakładka 

Reformatowanie kodu: 
V zaznaczenie tekstu do reformatowania 
= reformatowanie (znaczek "równa się" :)

Zaznaczanie blokowe:

Super sprawa. Wciskam Ctrl-V i zaznaczam prostokątny fragment tekstu. Teraz można już z tym zrobić wszystko tak, jak w trybie Visual.
Ale najfajniejsze jest wcisnąć Shift-i, wpisać coś i nacisnąć Esc. Wpisany tekst pokazuje się w każdej zaznaczonej linijce.

Lekki opis dla ludzi już coś wiedzących znajduje się na http://pl.wikibooks.org/wiki/Vim/Więcej_niż_edytor

Brak komentarzy:

Prześlij komentarz