Vim – obsługa pluginów

Wygodne zarządzanie pluginami w Vimie, przykłady ciekawych (i przydatnych) pluginów, dzięki którym praca w Vimie staje się jeszcze przyjemniejsza.

Pluginy w Vim

Spis treści

  1. Po co te pluginy?
  2. Jak w łatwy sposób zarządzać pluginami
  3. Pluginy których sam używam

Po co te pluginy?

Vim jakiego dostajemy po zainstalowaniu jest całkiem potężnym edytorem. Oczywiście należy go poprawnie skonfigurować, aby nie natknąć się na przykre niespodzianki (jak np. psucie polskich znaków diakrytycznych). Niemniej jednak Vim może być dużo przyjemniejszy, jak dodamy do niego kilka interesujących pluginów. Pluginy służą do rozszerzenia możliwości edytora np. o współpracę z SVN-em, wspomaganie Code Review, czy szybsze „generowanie” kodu HTML.

Jak w łatwy sposób zarządzać pluginami

Domyślnie pluginy Vima należy wrzucać do podkatalogu plugins jednym z katalogów, które Vim sprawdza. W systemach Uniksowych najlepsze miejsce to ~/.vim, a w Windowsie %HOMEDRIVE%%HOMEPATH%vimfiles (pod warunkiem że nie jest ustawiona zmienna środowiskowa %HOME%). W zależności od pluginu, niektóre (lub wszystkie) pliki pluginu będą w innych podkatalogach, np. ftplugins (pluginy uruchamiane w zależności od typu pilku), autoload (automatycznie ładowane pluginy w razie potrzeby), doc (dokumentacja pluginu).

Jako że wszystkie pluginy lądują w tych samych katalogach, a każdy z pluginów ma zwykle więcej niż jeden plik, czasem trudno się po pewnym czasie połapać które pliki należą do którego pluginu. W przypadku chęci deinstalacji jakiegoś pluginu, trzeba ręcznie wyszukiwać pliki które należy usunąć (z kilku podkatalogów). Aby ułatwić zarządzanie pluginami, można skorzystać z pluginu pathogen (patrz niżej). Instalacja i deinstalacja pluginów będzie znacznie łatwiejsza.

Pluginy których sam używam

pathogen – zarządzanie pluginami

Pathogen to podstawowy plugin, dzięki któremu zarządzanie pluginami w Vimie jest łatwiejsze. Po ściągnięciu pathogen.vim do podkatalogu autoload, należy zgodnie z dokumentacją, dopisać do pliku vimrc:

execute pathogen#infect()
filetype plugin indent on

Dodatkowo, należy stworzyć podkatalog bundle równolegle do podkatalogu plugins. W nim będą znajdować się wszystkie pozostałe pluginy Vima. Każdy plugin powinien mieć tam swój katalog (o nazwie takiej jak nazwa pluginu), w którym będą odpowiednie katalogu typu autoload, doc, plugin itd. Od teraz usunięcie konkretnego pluginu z którego chcesz zrezygnować to po prostu usunięcie jednego katalogu z podkatalogu bundle.

CodeReviewer – przegląd kodu źródłowego

CodeReviewer to plugin służący programistom do wspomagania przeglądu kodu źródłowego. Dzięki temu pluginowi można łatwo zaznaczać miejsca w kodzie które wymagają omówienia, dodając do każdego z nich stosowny komentarz. Następnie można przechodzić do kolejno zaznaczonych miejsc przy użyciu Quick Fix Window.

easymotion – szybkie przechodzenie kursora

Plugin easymotion służy do szybkiego przechodzenia do konkretnego miejsca widocznego na ekranie Vima. Po wciśnięciu odpowiedniej kombinacji klawiszy, każde słowo zostaje oznaczone literką, po wciśnięciu której kursor zostaje umieszczony właśnie na tym słowie. Ciężko się przyzwyczaić do takiego poruszania, ale po przyzwyczajeniu można bez pomocy myszy bardzo szybko przemieszczać się po tekście.

emmet.vim – do szybkiego pisania kodu HTML

Emmet.vim w bardzo prosty sposób wspomaga szybkie pisanie kodu HTML i CSS. Dzięki zdefiniowanym definicjom wielu bloków HTML, można kilkoma kliknięciami uzyskać np. szkielet strony (cały kod od doctype, przez nagłówki head do pustego body). Żmudne pisanie kolejnych tagów to już przeszłość. Chcesz zrobić listę numeryczną z pięcioma elementami? Wystarczy wpisać ol.lista>li*5 i wcisnąć (dalej będąc w trybie Insert) Ctrl-y, (oczywiście ten skrót można zmienić w pliku vimrc), aby uzyskać taki kod:

<ol class="lista">
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ol>

Prawda że szybkie? :)

snipmate – szybkie pisanie kodu w różnych językach programowania

Dopełnienie wspomnianego wyżej pluginu emmet.vim, to plugin snipmate służący głównie programistom. Wspomaga pisanie kodu poprzez dodanie snippetów w stylu edytora TextMate. Posiada wsparcie dla wielu języków programowania, bardzo łatwo można zdefiniować własne snippety, również dla innych języków. Przykład dla pythona: aby zdefiniować nową klasę, wystarczy wpisać cl i wcisnąć klawisz Tab, aby uzyskać taki kod:

class ClassName(object):
"""docstring for ClassName"""
def __init__(self, arg):
super(ClassName, self).__init__()
self.arg = arg

Teraz możemy kolejno zmieniać nazwę klasy, klasę po której dziedziczymy, docstring, argumenty metody __init__, wywołanie __init__ klasy bazowej. Pomiędzy wymienionymi miejscami przechodzimy wciskając znak Tab.

NERD tree – łatwiejsze otwieranie plików z dysku

Może trochę nadużyciem będzie powiedzenie, że NERD tree jest pluginem do zarządzania projektem (choć niektórzy tak twierdzą), niemniej jednak bardzo ułatwia poruszanie się po drzewie katalogów i otwieranie plików. Widząc całe drzewo katalogów względem katalogu bieżącego, można szybko znaleźć plik który chcemy otworzyć. Zwijanie/rozwijanie zawartości poszczególnych podkatalogów jest zdecydowanie łatwiejsze niż przechodzenie przez nie.

sherlock – dopełnianie słów kluczowych w Command Line Mode

Plugin sherlock ułatwia wprowadzanie słów kluczowych z treści edytowanego pliku, przy wywołaniu komendy. Przydatne, jak np. chcesz uruchomić grep'a szukając jakiegoś długiego słowa znajdującego się w pliku.

vcscommand – praca z repozytorium

Jeśli korzystasz z repozytorium (np. SVN, git), plugin vcscommand może niektóre operacje przyspieszyć. Na przykład chcąc porównać zmiany lokalne na pliku z wersją z repozytorium, należy uruchomić komendę VCSVimDiff (można również przez skrót \cv). W trybie vimdiff zobaczymy różnice pomiędzy wersją lokalną, a wersją z repozytorium.

taglist – szybsza edycja kodu źródłowego

Kolejny plugin wspomagający pracę programisty to taglist. Uprzyjemni poruszanie się po kodzie poprzez szybkie przejście do konkretnej klasy czy metody w klasie, poprzez kliknięcie na nią na wyświetlonej liście wszystkich zdefiniowanych metod.

vimball – instalacja pluginów vba

Plugin vimball służy do instalacji pluginów dostępnych w postaci plików *.vba. Potrzebny np. do instalacji pluginu sherlock.

vim-flake8 – szybki pep8+pylint dla programistów pythona

Jeśli programujesz w pythonie, vim-flake8 jest właśnie dla Ciebie! Plugin daje szybkie sprawdzenie poprawności kodu, z dostępem do ewentualnych błędów z poziomu QuickFix Window.

vim-scriptease – wspomaganie edycji plików runtime

Może mało i rzadko przydatny plugin, jednak vim-scriptease dla niektórych będzie przydatny. Udostępnia kilka komend ułatwiających edycję plików runtime, ich listowanie czy przeładowywanie.