Vim jako środowisko pythonowe
Vima używam od, jak to się mówi, "od zawsze". W międzyczasie próbowałem też kilku innych edytorów (między innymi bardzo silnego jEdit) czy inne oprogramowanie-do-wszystkiego (czyli IDE) - Eclipse i Netbeans, jednak w przypadku pisania czegokolwiek w Pythonie zawsze brakowało mi w nich pewnego rodzaju elastyczności.
Jasne - Eclipse ma świetny Pydev, jednakże sam edytor w Eclipse jest.. hm.. jakiś jest - nic rewelacyjnego. Podobnie jest z Netbeans. Jedit to osobna historia, ponieważ jest to typowy edytor programistyczny, a nie IDE, więc jego wsparcie dla poszczególnych języków rozkłada się bardzo różnie. Dla przykładu jEdit ma całkiem fajne pluginy dla Ruby, a konkretnie dla Railsów, natomiast z Pythonem jest trochę gorzej.
Poszukiwania edytora na tyle lekkiego i uniwersalnego który jednocześnie zapewniałby przyzwoite wsparcie dla Pythona doprowadziły mnie do punktu wyjścia. Każdy z nich miał co prawda swoje zalety, ale również i wady. Dlatego też, postanowiłem nieco "podrasować" VIMa, celem uczynienia z niego przede wszystkim zaawansowanego edytora, którym przecież jest :) i dodaniu kilku elementów wspomagających pracę.
Wygląd
Vim w poszczególnych dystrybucjach dostarczany jest w wersji graficznej i tekstowej (to znaczy takiej, która będzie mogła zostać użyta w emulatorze terminala). Różnice pomiędzy Gvim a Vim są dość nieznaczne i skupiają się głównie w dodanych możliwościach interfejsu graficznego, m.in.: pełniejsza obsługa myszką, konfigurowalne menu główne, popup menu, tooltops, graficzne karty, obsługa pełnej palety kolorów. Vim potrafi też obsłużyć 256 kolorów, jeśli terminal na to pozwala. Obecnie używam rxvt-unicode z włączoną łatką umożliwiającą wyświetlenie 256 kolorów.
Temat kolorów, który używa się w edytorze jest kwestią gustu. Znam całą masę osób wypalających sobie oczy z jaskrawym, domyślnym tematem Eclipse, którzy uważają, że to normalne, natomiast ja od zawsze preferowałem tematy z ciemnym tłem, dlatego też spośród setek dostępnych tematów wybrałem wombat256.vim, który to delikatnie zmodyfikowałem do swoich potrzeb.
Narzędzia
W jEdit byłem przyzwyczajony do rozmieszczenia poszczególnych wizualnych części edytora jak poniżej:
Po lewej stronie pliki projektu (plugin Project Viewer), po prawej code browser (ctags), na dole konsola (ograniczona, ale czasem się przydawała), hypersearch, error list i interpreter Jythona. W centralnej części edytor.
Chciałbym, aby Vim zapewnił mi podobne środowisko, dlatego też przeszukałem http://www.vim.org w poszukiwaniu gotowych skryptów, szczególnie pod kątem edycji plików Pythonowych.
Oto co otrzymałem jako środowisko końcowe:
Po lewej stronie znajduje się NERD Tree, który zastępuje (w pewnym stopniu) jEditowy plugin Project Viewer, po prawej jest Tag List korzystający z ctags code browser. W środku źródło. Konsoli w oknie edytora brak, i choć istnieje patch, jakoś nie miałem potrzeby posiadania kolejnego bufora z bashem. Tyle na pierwszy rzut oka. Ale to nie wszystko. Oto co w środku:
Zbiór przydatnych skrótów/menu dla Pythona - przechodzenie pomiędzy klasami i funkcjami, oznaczanie komentarzem zaznaczonego bloku kodu, przesuwanie kodu itp.
Alternatywne zachowanie się wcięć - Właściwie, nie wiedzieć czemu, Vim nie podąża za PEP8 dla plików pythonowych. Ten skrypt umieszczony w
~/.vim/indent/
to naprawi.VCSCommand - plugin dodający integrację Vima z systemami kontroli wersji (CVS, Subversion, SVK, Bazaar oraz Mercurial), włączając w to porównanie plików poprzez Vimdiff. Może nie jest to ściśle związane z programowanie w Pythonie, jednakże zwykle kod trzymany jest w jakimś systemie kontroli wersji.
Przeszukiwanie aktywnego bufora i umieszczenie wyników w oknie quickfix jako uzupełnienie komendy
:[vim]grep
.Vim pozwala na zdefiniowanie kompilatora, który będzie uruchamiany przy wydaniu komendy
:make
. W sieci jest sporo przykładów, jak podpiąć kompilator. Oczywiście nie chodzi o kompilację do byte codu, tylko o sprawdzenie poprawności kodu dzięki programom do analizy kodu źródłowego Pythona. Wystarczy umieścić skrypty w~/.vim/compiler
i dodać odpowiednie wpisy do~/.vimrc
.Osobiście używam pylint, który mam podmapowany pod klawisz F5, natomiast pychecker uruchamia się przy zapisie pliku.
Vim, jako porządny edytor, jest też wykorzystywany w jako wewnętrzny edytor dla projektów takich jak Pida oraz jako plugin dla Eclipse Eclim. Ten ostatni dostarcza dość sporo skryptów m.in. dla plików Pythonowych, które można używać poza Eclimem. Eclim korzysta między innymi z Rope, narzędzia do refaktoryzacji kodu. Daje też wsparcie dla projektów pisanych w Django. Z części tych rzeczy można korzystać bez Eclipse.
Sądzę, że ten drobny artykuł zachęci do bliższego zaznajomienia z Vimem.