Prečo som začal používať editor VIM

Editor VIM na tablete

Tento článok nemá za úlohu presviedčať prečo je VIM lepší alebo horší ako iný editor. V článku popisujem prečo som začal používať editor VIM ja.

Kto by si chcel editor VIM vyskúšať online, tak môže skúsiť projekt Vim.js.

Približne rok používam editor VIM na programovanie väčšinou webových aplikácií. Prvý krát som sa editorom VIM stretol asi pred trinástimi rokmi a prvé stretnutie vôbec nebolo idilické. Vtedy som začínal aj s Linuxom a väčšina manuálov a dokumentácií odporúčala používať na editovanie konfiguračných súborov práve editor VIM. V tom čase ešte bolo grafické prostredie Linuxu ešte v plienkach a tak som pracoval v textovom režime. Keď som prvý krát spustil VIM tak som zrazu zistil ze nech stláčam čo chcem, na obrazovke sa nezobrazovali žiadne znaky tak som si povedal že idem teda z editoru preč a skúsim iný editor. Ale zrazu som zistil že VIM neviem ani ukončiť, tak prvý krát som editor VIM musel ukončiť tvrdým resetom počítača :). Editor VIM je jeden z mála editorov ku ktorému si musíte prečítať návod/manuál ešte skôr ako ho začnete používať. Od vtedy som sa niekoľko krát snažil sním skamarátiť až sa mi to nakoniec po niekoľkých rokoch aj podarilo. Ale určite to nebola láska na prvý pohľad! :)

Na internete sa objavujú aj takéto vtipy o editore VIM:

I've been using Vim for about 2 years now, mostly because I can't figure out how to exit it.

O editore VIM počul takmer každý programátor, ale skôr nájdete jednorožca ako niekoho kto ho aktívne používa pri programovaní. :) Ja osobne poznám len jedného človeka, ktorý programuje pomocou editoru VIM. O to je iskra v oku väčšia keď sa máme ským pobaviť o svojom obľúbenom editore. Tu by som povedal že z môjho pohľadu je editor VIM určený pokročilejším programátorom ktorý už vedia čo potrebujú a chcú mať editor čo najviac pod kontrolou. V IDE je už pre Vás všetko nakonfigurované a prednastavené (často aj veci ktoré nepoužívate alebo nepotrebujete).

V podsate stále sledujem a testujem aj nové editory ako Brackets, Atom, atď., keď bude moja efektivita v týchto editoroch vyššia, nebudem mať problém prejsť na iný editor (nepovažujem sa za ortodoxného používateľa VIMu). Aj dnes občas používam IDE na vývoj mobilných aplikácií, lebo predsla len s toolingom ktorý Android Studio poskytuje viem byť efektívnejší (ale mám nainštalovaný plugin ktorý emuluje niektoré funkcie VIMu). Takmer na všetko ostatné používam VIM.

Asi nebude úplne fér porovnávať špecializované IDE s textovým editorom, ale dám sem zopár obrázkov na porovnanie ako vyzerá bok po boku IDE a editor VIM.

PhpStorm (IDE) PhpStorm
VIM (grafická verzia)
VIM (textová verzia)

V minulosti som si prešiel niekoľkými editormi a rôznymi IDE ako napríklad Eclipse, Netbeans, Idea, PhpStorm, Pycharm, Android Studio, Sublime Text, atď. Mám zakúpené aj licencie k PhpStorm, PyCharm, Sublime Text, pretože v tom čase vedeli dosť zlepšiť efektivitu môjho programovania a oplatilo sa mi do nich investovať.

Zvyknem programovať v rôznych jazykoch, musel som mať často nainštalovaných niekoľko IDE a aby to nebolo málo používam viac počítačov (desktop, notebook) a zosynchronizovať medzi sebou všetky inštalácie a konfigurácie už dávalo dosť zabrať.

Keďže IDE postupom času začali "bobtnať" a rástli ich vypočtové aj pamäťové nároky, tak v poslednom čase som mal pocit že viac času strávim čakaním na indexovanie knižníc a kódu ako programovaním a práca s IDE bola čoraz pomalšia. Tiež sa mi veľmi nepáči myšlienka že na vývoj Php, Python, Ruby si najprv musím nainštalovať Javu (napríklad Ubuntu 14.04 nebsahuje v štandardných balíčkoch Javu a treba pridať extra repozitár).

A to bol asi aj dôvod prečo sa znova dostávajú do popredia editory ako Sublime Text, TextMate atď. Sú rýchlejšie a majú menšie pamäťové nároky a pomocou pluginov sa dá dosiahnuť funkcionalita podobná "veľkým" IDE a každý si pridá len funkcie ktoré potrebuje. Editory sú obľúbené hlavne u vývojárov v dynamických jazykoch ako Php, Python, Ruby, Javascript, atď. Kde podľa mňa IDE neponúkajú až takú pridanú hodnotu pri vývoji, zažil som už aj ľudí, ktorý programujú v Notepade a sú spokojný.

Nakoniec som sa aj ja pridal k uživateľom SublimeText-u, ktorý ma zaujal v rôznych promo videách, kde všetko vyzeralo tak úžastne a jednoducho :) Aj keď som musel stráviť viac času hľadaním pluginov a konfiguráciou editoru, kým som dosiahol funkčnosť podobnú IDE. Problém bol tiež so synchronizáciou nastavení a pluginov medzi viacerými počítačmi. Čo som nakoniec čiastočne vyriešil pomocou DropBoxu, ale synchronizovať nastavenia medzi rôznymi operačnými systémami nie je žiadna zábava. Nakoniec som sa s editorom SublimText rozlúčil po tom, čo som si kúpil notebook s procesorom ARM, pre ktorý neboli dostupné balíčky (a dodnes ani nie sú). Ďalší problém ktorý je so SublimeTextom je že ho vyvíja jeden človek a už internetom kolujú zvesti, či vôbec bude vydaná nová verzia. Pre tieto problémy som sa rozhodol zmeniť nielen editor ale zmeniť aj workflow.

VIM vo Firefoxe (FireSSH)

Aby som si čo najviac ulahčil prácu s nastaveniami a synchronizáciou, tak som si predplatil virtuálny server na ktorom vyvíjam. Výhodou je že viem programovať z akéhokoľvek počítača, tabletu, internetového prehliadača, ktorý podporuje pripojenie cez SSH. Na virtuálnom serveri nebeží žiadne grafické prostredie, teda je možné používať len textové editory. Na výber bol v podstate len Emacs alebo VIM o Emacs-e v podstet nič neviem, tak som sa rozhodol pre VIM o ktorom sa aj viac diskutovalo a písalo na internete (viac článkov, návodov, skúseností). Zaujímavé je že na serveri mi stačí na prácu s VIMom 512MB RAM a všetko beží svižne a nepozorujem rozdiel v rýchlosti medzi vývojom na lokálnom počítači a virtuálnom serveri. Často pracujem na miestach kde nie je dostupný rýchly internet, ale keďže editor VIM pracuje v textovom režime je práca aj cez slabší internet celkom plynulá.

Asi nemá význam vypisovať čo všetko editor VIM dokáže, pomocou pluginov s ním môžete spraviť takmer čokoľvek, tak len v skratke: zvýrazňovanie syntaxe, code completion, refactoring, podpora pre verzovacie systémy, linting, code folding, spellchecking, ...

Z môjho pohľadu sú najzaujímavejšie na editore VIM tieto vlastnosti:

VIM spustíte takmer kdekoľvek na Windows, Linux, MacOS a mnoho ďalších operačných systémoch (pre zaujímavosť prvá verzia VIMu bola vydaná pre počítač Commodore Amiga)
VIM beží v textovom režime, tým pádom ho môžete používať napr. na serveroch alebo cez SSH. Nie každému sa môže páčiť textové rozhranie pre tých je k dispozícii aj grafická verzia editoru ktorá je o trošku viac "sexy".
VIM sa dá ovládať čisto z klávesnice, čo je pre mňa najväčšie plus. A toto je vec čo ma na rôznych IDE vie pekne vyviesť z rovnováhy keď musím dávať ruky preč z klávesnice a pracovať s myšou.
Dobrou správou je že dnes v takmer každom IDE existuje plugin, ktorý umožňuje emulovať niektoré vlastnosti editoru VIM. Takže sa nemusíte vzdať svojho IDE a kód editovať podobne ako v editore VIM. Aj keď sú obvikle tieto "emulátory" VIMu bývajú dosť oklieštené a majú obmedzenú funkčnosť na základnú prácu postačujú, ale musíte zabudnúť na podporu pluginov.

Mnoho ľudí hovorí že by aj radi chceli vyskúšať editor VIM, ale nemajú na to čas. Súhlasím na začiatku treba investovať nejaký čas do učenia a nastavovania editoru, ale časovo to podľa mňa vychádza rovnako ako nakonfigurovať napríklad SublimeText alebo sa naučiť pracovať s novým IDE.

V mojom prípade po osvojení si niektorých editačných vlastností editoru VIM mi rapídne stúpla efektivita programovania. Ale o tom snáď v ďalšom článku...

Odkazy

I swapped my MacBook for an iPad+Linode

Show Comments