Jako člověk, který tráví značné množství času před počítačovou obrazovkou (nebo dvěma), mám už docela dlouho povědomí o dvou skupinách lidí, podporujících dva programy na editování textu – vi/vim a Emacs. Vím tedy, že vztah mezi těmito dvěma skupinami je podobně žhavý jako mezi fandy Windows a Linuxu – zastánci z obou stran považují svoji volbu za tu lepší. Vím, že oba programy by měly mít oproti běžné práci s textem (šipky, ctrl, shift, home/end atd.) značně širší možnosti, navíc mají každý své vlastní spektrum možností a rozšíření, ale také vím, že prý nejsou zrovna jednoduché na naučení.
Na druhou stranu, obvyklé klávesy a zkratky pro práci s textem jsou velmi omezené – dostat kurzor na správné místo často zahrnuje buďto opakované mačkání šipek, nebo se člověk musí chopit myši. Pro normálního uživatele to není až tak velký problém, pro člověka, který pracuje s kódem, to je ale zpomalující a časem otravné. Přece musí existovat lepší způsob. A ano, jak vim tak Emacs nabízí zvýšení produktivity – jak ostatně potvrdí každý, kdo se naučil s nimi pracovat.
Každopádně mi trvalo hodně dlouho, než moje frustrace z neohrabanosti klasického editování textu dostoupila takové úrovně, abych to začal nějak řešit. Když se tak stalo, začal jsem pokukovat po různých řešeních, ale ani vim, ani Emacs nepřipadaly v úvahu, měl jsem je zařazené jako příliš složité na naučení. Zkoušel jsem tedy různé textové editory, a ačkoliv každý slušný editor dnes má funkce jako nahrávání maker (výborná věc), samotné editování textu nebývá nijak zvlášť obohacené.
Takže jsem se nakonec rozhodl strávit měsíc nebo dva učením jednoho z těch dvou programů – když si člověk vezme, že z toho bude do konce života těžit, a je jedno, na jaké platformě zrovna pracuje, protože oba editory existují snad úplně všude, není to vůbec špatné. Věděl jsem, že vim má dva režimy editace – normální, ve kterém se nedá psát, jen přesouvat kurzor, a insert mód, ve kterém se psát dá, ale s kurzorem toho zas člověk moc neudělá. Zdálo se mi to zajímavé, ale zbytečně složité – zvlášť, když jsem viděl to množství podivných zkratek jako :wq. A tak jsem místo toho stáhl Emacs, vytiskl soupis klávesových zkratek a… a nic. Moje nadšení vyšumělo, protože ještě než jsem vůbec mohl začít něco dělat, bylo potřeba program nastavit a prozkoumat, a netvářilo se to zrovna přístupně. Zkusil jsem pár variant, prošel nějaký tutorial, ale moje odhodlání bylo pryč, a radši jsem dál používal bezproblémový PSPad.
O nějaký ten měsíc později jsem zrovna neměl co dělat, a napadlo mně, že bych se mohl podívat na vim. Tak jsem si přes del.icio.us našel zajímavé odkazy, a bingo. Ještě než jsem stihl nainstalovat GVim, u kterého bych počítám pohořel jako u Emacsu, narazil jsem na Cream, což je modifikace pro GVim. Nainstaloval jsem, otevřel zdroják Pythonu, a zkusmo zmáčknul j, což by v normálním režimu vimu mělo fungovat jako šipka dolů. Místo toho se v kódu objevilo j. Hm, říkám si, co to. Ukázalo se, že Cream je na přechod k novému způsobu editace textu ideální, protože jednak umí fungovat jako běžný textový editor, a jednak i při přepnutí do klasického vim způsobu (expert mode) si zachová značnou část klávesových zkratek, na které je člověk zvyklý. Takže přechod byl prakticky bezbolestný. Vedle toho se dá nahrát k portable verzi GVimu, kterou není potřeba instalovat a člověk ji tedy může nosit sebou na flashdisku, a má asi nejpříjemnější barevná schémata co jsem kdy viděl.
Takže jsem nahodil Expert mód, vytisknul si pár cheatsheetů, otevřel nějaké tutorialy, a během jednoho odpoledne už jsem jásal nad tím, jak úžasné věci se s tím dají dělat. Základy nejsou těžké (zvlášť když se člověk v nouzi může bez problémů vrátit k zaběhaným způsobům), a je to až neuvěřitelně zábavné a chytlavé. Klávesnice přestává být neobratným nástrojem a překážkou, a prakticky mizí. Zůstává jen text a “flow”.
Stačí si pustit nějaká videa, a sledovat, jak se pohybuje kurzor. Dá se urychlit tolik věcí, že pro nezasvěceného vypadá člověk píšící ve vimu jako hackerský bůh.
Takže ano, stojí za to se to naučit, a ani to není tak složité, jak by se mohlo zdát.
Další info o vimu v češtině
Tutoriál a nějaké tipy:
vim tutorial
lots of key combinations and tips
vim keys
100 vim commands every programmer should know
a jeden z nejpovedenějších článků o tom, čím je Vim tak zajímavý – Coming Home To Vim
UPDATE: Po nějaké době jsem se vykašlal na Cream, protože se mi začal plést do cesty, a používám jen GVim. Stojí to za to.