narzędzia

9 funkcji VIMa, które powinieneś znać

9 funkcji VIMa, których możesz nie znać

VIM został wydany 27 lat temu, a pomimo tego nadal jest jednym z najpopularniejszych edytorów tekstowych. Przez jednych uwielbiany, przez drugich nienawidzony. Żart o wychodzeniu z VIM’a już na dobre zadomowił się w zbiorze programistycznych memów. Na czym polega fenomen tego programu i dlaczego budzi on tak skrajne emocje?

Aktualnie jestem fanem VIMa, jednak nie zawsze tak było. Program ten poznałem już pierwszego dnia studiów. Na zajęciach z języków i metod programowania prowadzący od samego początku wykładu zaczął wykorzystywać zaawansowane funkcje omawianego edytora. Na twarzach słuchaczy wykładu (w tym zapewne i mojej) można było dostrzec oznaki niezrozumienia, a czasem i przerażenia.
Pierwszy kontakt z VIMem na własnej maszynie również nie należy do najprzyjemniejszych. Nawyki nabyte przy korzystaniu z programów nie dają oczekiwanych rezultatów, co nierzadko prowadzi do frustracji i braku chęci do dalszej „współpracy” z edytorem.

VIM jest jednak programem, który zyskuje przy bliższym poznaniu. Już po kilku godzinach pracy, stare nawyki przestają być uciążliwe, a zaczyna się doceniać funkcje, które udostępnia. Wbrew pozorom jest to bardzo rozbudowany edytor tekstowy, który warto poznać.

Tryby pracy

VIM posiada 3 główne tryby: NORMAL, INSERT i COMMAND-LINE.
W trybie NORMAL nie ma możliwości wprowadzania tekstu, lecz możemy wykonywać podstawowe operacje edycji pliku za pomocą przycisków na klawiaturze. Jest to domyślny tryb, w którym włącza się program i z niego możemy przechodzić do innych trybów. Naciśnięcie litery X stosujemy do wycinania znaku, nad którym jest nasz kursor, a użycie klawisza z literą P spowoduje wklejenie skopiowanego znaku. Operacje te można łączyć, na przykład naciśnięcie po sobie przyciski YYP spowoduje zduplikowanie aktualnie zaznaczonej linii. Aby zamienić miejscami dwie linie należy użyć kombinacji DDP (aktualnie zaznaczona linia zostaje zamieniona z linią poniżej), zaś usunięcie 4 linii (od zaznaczonej w dół) możemy osiągnąć przy pomocy skrótu D4D.

Aby przejść do trybu INSERT należy nacisnąć klawisz I. Oprócz trybu wstawiania możemy wyróznić inne tryby służące do interakcji z tekstem jak na przykład VISUAL (klawisz V) służący do zaznaczania tekstu czy REPLACE(R) do podmiany znaków. Po przejściu w tryb INSERT z VIMa korzystamy jak z każdego edytora tekstu.

Do trybu poleceń dostajemy się z trybu NORMAL za pomocą przycisku dwukropka (:). Tryb ten będzie nam potrzebny między innymi do zapisu i wyjścia z edytora. Aby zapisać stan dokumentu należy wpisać :w i potwierdzić enterem. Aby zapisać i wyjść, musimy użyć komendy :wq, zaś aby wyjść wymuszając brak zapisu stosujemy komendę :q!. Używanie tego trybu jest konieczne do wywoływania innych przydatnych funkcji VIMa.

VIM posiada wiele funkcji, które domyślnie są wyłączone, lecz to właśnie one są powodem, dla którego programiści nadal korzystają z tego edytora. Oto kilka z nich, z których korzystam najczęściej:

Funkcje VIMa, których możesz nie znać:

Numerowanie linii

Numerowanie linii jest podstawową funkcją każdego edytora przeznaczonego do programowania. Co prawda w VIMie opcja ta jest domyślnie wyłączona, jednak można włączyć ją komendą :set nu. Aby wyłączyć tę opcję należy wykonać polecenie „:set nonu”.
Numerowanie linii w VIM

Podpowiedzi

VIM posiada także funkcję podpowiedzi. Aby uzyskać podpowiedzi w trybie INSERT należy użyć kombinacji przycisków ctrl + N
Podpowiedzi w VIM

Wyszukiwanie wzorca

VIM pozwala również na wyszukiwanie wzorca w zawartości otwartego pliku. Aby wyszukać żądaną frazę należy nacisnąć ukośnik (/) a następnie wpisać szukany wzorzec.
Wyszukiwanie wzorca w VIM

Korzystanie z myszki

Częstym argumentem przytaczanym przeciw VIMowi jest „nieobsługiwanie myszki”. Wielu ludzi jednak nie wie, że VIM posiada możliwość obsługi myszki. Można ją włączyć za pomocą komendy :set mouse=a. Po wykonaniu polecenia będziemy w stanie zaznaczać tekst przy użyciu myszki czy też zmieniać położenie kursora. Aby wyłączyć obsługę myszki używamy polecenia :set mouse=n

Dzielony ekran

Jedną z bardziej przydatnych dla mnie funkcji edytorów tekstowych jest dzielenie ekranu (tzw split). VIM posiada opcję dzielenia zarówno horyzontalnego jak i wertykalnego. Po otworzeniu pierwszego używamy komendy komendy :sp aby otworzyć plik dzieląc okno horyzontalnie. Otwarty tak plik będzie w górnej części okna.
Horizontal split VIM
Do otwierania plików dzieląc ekran wertykalnie służy polecenie :vsplit
Vertical split VIM
Do przełączania między oknami służy skrót ctrl + W, jednak po ustawieniu opcji mouse=a można robić to również myszką.

Zakładki

Kolejną przydatną funkcją VIMa jest obsługa zakładek. Gdy mamy już otwarty plik w VIMie i chcemy otworzyć następny jako zakładka musimy używać polecenia :tabe <nazwa_pliku>. Aby przełączać się między zakładkami możemy użyć skrótu GT lub na przykład 2GT jeżeli chcemy przełączyć się do drugiej zakładki od lewej strony. Można również do tego celu wykorzystać myszkę, gdy mamy włączoną jej obsługę. Do zmiany kolejności zakładek służy polecenie :tabm, które przesuwa aktualną zakładkę na koniec. Aby przesunąć zakładkę na pierwszą pozycję możemy wykonać komendę :tabm 0.
Zakładki w VIM

Colorscheme

Programiści spędzają przy edytorach tekstowych mnóstwo czasu. Dla niektórych ważne jest, aby edytor tekstowy był atrakcyjny również wizualnie. VIM posiada kilka wbudowanych motywów. Aby zmienić motyw należy użyć polecenia :colo lub :colorscheme i podać nazwę motywu. Jeżeli po wpisaniu jednej użyjemy kombinacji ctrl + d wyświetli się lista dostępnych motywów.
Możemy również dodać motyw stworzony przez społecznośc. Ich listę znaleźć możecie na przykład tutaj.
People using light IDE theme

Kontrola składni

W poście PEP 8 – czyli gramatyka dla programisty pisałem o edytorach umożliwiających kontrolę naszego kodu pod kątem zgodności z konwencją PEP 8.
Aby uzyskać taką możliwość w VIMie należy odpowiednio go skonfigurować. Plik konifugracyjny VIMa nosi nazwę .vimrc. W przypadku systemów z rodziny UNIX plik ten znajduje się zazwyczaj pod ścieżką ~/.vimrc. Aby znaleźć go korzystając z wersji dla systemu Windows wystarczy w VIMie użyć komendy :echo $MYVIMRC.
Gotowy plik .vimrc przystosowany do programowania w Pythonie możecie znaleźć tutaj: python-vimrc.

Eksplorator plików

VIM posiada wbudowany eksplorator plików. Aby go uruchomić należy użyć polecenia :Explore. Eksplorator można otworzyć również obok otwartego pliku przy pomocy komend :Sexplore (co podzieli ekran horyzontalnie) lub :Vexplore (wertykalnie).
Eksplorator plików VIM

Kiedy nie używać VIMa?

VIM nie jest programem, który sprawdzi się w przypadku każdego języka programowania. Należy pamiętać, że jest to jedynie edytor tekstu, a nie zaawansowane IDE programistyczne. Tworzenie kodu Javy z użyciem VIMa i kompilowanie go z linii poleceń być może nie jest najrosądniejszym wyborem, jednak w przypadku naniesienia drobnych poprawek w plikach może być to znacznie szybsza droga niż uruchamianie potężnego IDE startującego ponad minutę w celu dodania dwóch linijek.

Podsumowanie

Omówiłem tutaj tylko kilka funkcji VIMa, które w innych edytorach tekstu są widoczne i oczywiste, jednak to jedynie wierzchołek góry lodowej ukrytej złożoności programu. Po pokonaniu pierwszych trudności nauki korzystanie z VIMa zaczyna sprawiać przyjemność i trudno się z nim rozstać 😉
Istotną zaletą VIMa jest również wkład społeczności gromadzącej się wokół niego. GitHub jest pełen przeróżnych rozszerzeń i dystrybucji VIMa, a na oficjalnego stacka VIMa wchodzi dziennie prawie 5 tysięcy osób.

Zachęcam Was do spróbowania pracy z tym edytorem, być może Was również urzeknie 😉

Dodatkowe materiały

VIM tips & tricks
Blog RealPython.com o przystosowywaniu VIMa jako Pythonowe IDE
„Dlaczego używam VIMa” autorstwa Pascala Prechta



Jeśli chcesz być na bieżąco z najnowszymi materiałami, polub nasz fanpage na Facebooku:

https://www.facebook.com/kamil.kwapisz.python
Tagged ,

1 thought on “9 funkcji VIMa, które powinieneś znać

  1. Bardzo wygodne, przynajmniej ja z tego korzystam. Włącza się i wyłącza klawiszem F2 lub innym zadysponowanym w poniższym ustawieniu, zadeklarowanym w .vimrc.

    Są to numerki wierszy od kursora, gdzie jest rzeczywisty numer wiersza; w górę i w dół: 1, 2, 3 , 4 … do wypełnienia ekranu i przesuwające się wraz z pozycją kursora.

    Trzeba wstawić w .vimrc to co poniżej (pierwszy wiersz wstawki to komentarz):

    ” klawisz F2 ustawiamy jako przełącznik wyświetlania linii
    set number
    map :set relativenumber!set relativenumber?
    imap :set relativenu! ” potrzebne aby dzialalo takze w trybie wstawiania

Comments are closed.