k47.cz

twitter RSS
««« »»»

Můj VIM

27. 11. 2019 — k47

Rivalitu mezi Vimem a Emacsem jsem tu už zmínil jako nejdelší flamewar v dějinách. Zuří nepřetržitě od osmdesátých let mezi příznivci dvou mocných textových editorů, jejichž počátky sahají do dob, kdy počítače byly tvořeny systémem pák a kladek a křemík se používal jen ve formě silikonového gelu pro prsní implantáty1 . Na jedné straně stojí GNU Emacs, pocházející z mozku svatého Richard Stallman a na druhé Vim, známý také jako editor of the beast (protože VI je římské číslo 6, což evokuje 666), který vytvořil někdo jiný. Jeho jméno si bohužel nikdo nepamatuje.

Já duši upsal Vimu před mnoha lety z důvodů, které jsou nenávratně ztraceny v závějích času. (Matně si vzpomínám na tenhle návod, ale jestli šlo o prvotní impulz, nebo až následek apriori infekce, si netipnu.) Strana, kterou si vyberete v editorových válkách, vás změní. Začnete jinak psát, jinak pracovat, jinak myslet, jinak žít. Začne to nenápadně zanesením prvních direktiv do .vimrc, pokračuje to přemapováním klávesy capslock na escape a psaním vlastních rozšíření, které vám sednou jako pozadí na hrnec a skončí to nežádoucími tiky svalové paměti, kdy automaticky vyťukáváte klávesová komba vimu v programech, které jim nerozumí. gqap? yypv$r=?

Nedávno jsem se zhrozil, když jsem se snažil vybavit určité kombo. Dokázal jsem ho napsat, i bez klávesnice ho prsty dokázaly vyťukat, ale nemohl jsem si vybavit, které klávesy to jsou. Jako kdyby ta znalost žila v prstech a ne v mozku.

Aby bylo jasno, takhle vypadá přehled funkcí jednotlivých kláves v normálním módu, kdy nevkládáte text, ale provádíte něco, za co by vás v patnáctém století banda Španělů v červených hábitech, které nikdo nečeká, měla za čarodějnice. Při pohledu do téhle mapy jsem si usilovně snažil vybavit, co dělá určitá klávesová kombinace, aby mi pak došlo, že ji používám dnes a denně. Zase, po letech práce ve vimu znalosti klávesových akordů definitivně opustily vědomí a přešli do Freudovských katakomb mozku.

Jednu klávesu normálního módu jsem stoprocentně za všechna ta léta nikdy nepoužil – K pro vyvolání nápovědy pro slovo pod kurzorem. (A taky g? pro rot13. Proč to tam vůbec je?)

Další změnou, kterou na sobě začnete časem pozorovat, je pozvolné přizpůsobování editoru vašim chutím a preferencím. Po letech se z jednoduchého nástroje stane jedinečné prodloužení míšního kanálu a konečků prstů, zcela nepoužitelné pro kohokoli jiného. Zároveň ztratíte schopnost jakkoli používat cizí zmutované ohavnosti. Všichni začneme jako vojáci ve válkách editorů bojovat za společnou věc, ale skončíme sami ve vlastních zákopech obklopeni světem, který nám nerozumí & naopak.

Moje modifikace přibývaly plíživě. Ve velkém jsem se do nich opřel až letos, kdy vim dostal funkce na míru pro práci s asciiblogem. Poté jsem do jeho stále tepajících útrob vrazil LSP klienta a tím se z něj stalo plnohodnotné IDE a úpravy vesele pokračují. Teď jsem přidal příkazy pro anglicko-český slovník a tezaurus (oba recyklují onu neužívanou klávesu K).

Při psaní se často stává, že se mi v hlavě objeví anglické slovo perfektně popisující situaci, ale nemůžu přijít na jeho českou variantu, která by byla podobně efektivní. Dřív jsem musel alt-tabovat do prohlížeče, jít na seznamácký slovník a tak dál. Šlo o zdlouhavou odbočku, která navíc nefungovala ve wi-fi stínu. Stěží ideální. Nový doplněk používá offline en-cz slovník z debianích repozitářů (dict, dictddict-freedict-eng-ces) a lokální slovík synonym (mythes-cs). Teď stačí příkaz :Dict nebo Kd s kurzorem nad daným slovem a voilà — překlad.2 Jednoduché, efektivní a stačilo to používat pět minut, abych jasně cítil, že se mi právě změnil život. Proces tvorby teď působí uhlazeněji. Nemusím odbíhat z editoru a mám neuvěřitelnou moc pro bříšky prstů. Tak by měl fungovat váš editor – měl by být přizpůsoben právě a jenom vám, jako nástroj, který sedne do rukou zručného mistra.

Někdo může namítat že excesivní přizpůsobování je ztráta času, že se nevyplatí a že zvýšená produktivita nevyváží hodiny spálené nimráním se v detailech, čtením dokumentace a skritpováním. Na to namítnu, že nezáleží jen na produktivitě, ale jestli se cítíte spokojení. Když je něco vaše, chcete to používat, máte z toho dobrý pocit. To je kouzlo DIY. Všechno si můžeme koupit, ale nic nemá takovou cenu, jako něco vlastního, co jste si vyrobili sami. Možná v tom spočívá přitažlivost Vimu a Emacsu pro extrémní harcovníky — nemusí být nutně lepší, jsou jen jejich. Proč ne? Všichni děláme iracionální volby a něco nám prostě přinese větší požitek, než alternativa, která je objektivně „lepší“.


Jinak, kdyby vás zajímalo, jak moje doplňky vypadají, nahrál jsem je semhle. Jeden kus patří do .vimrc, ostatní jsou skripty. Jeden v bashi, druhý v jazyku D. Proč zrovna D? Nuže, D působí jako skriptovací jazyk, ale pořád vás může překvapit segfaultem. Jde o C++ převlečené za příčetný něco, jehož syntaxe se nesnaží vyvolat prastaré bohy ze spánku na dně oceánů.


  1. Tohle není tak velký nesmysl, jak může na první pohled vypadat. Je to špatně, ale ne zas tak špatně. První fungující křemíkový tranzistor byl vyroben v r. 1954, MOSFET tranzistor, který nastartoval počítačovou revoluci, byl vynalezen v r. 1959implantát se silikonovým gelem v r. 1961.
  2. Přibližně v tomto místě jsem si při psaní článku odskočil a udělal další dvě rozšíření: Jedno hledá články podle tagu (gd nad tagem a vyskočí mi seznam článků s příslušným tagem) a druhé odskočí na článek podle odkazu (nedá se to udělat jen s pomocí ctags, protože odkazy můžou být nepřímé reference). Oba zabraly pár (desítek) minut a hned mi znatelně mi usnadnily život & vnesly do něj nadkritické množství spokojenosti.
píše k47 & hosté, ascii@k47.cz