Lapce: kombinace Vimu, Helixu a Visual Studio Code

29. 2. 2024
Doba čtení: 18 minut

Sdílet

 Autor: Depositphotos
V dnešním článku se setkáme se zajímavým a do budoucna (pravděpodobně) i užitečným projektem nazvaným Lapce. Z pohledu uživatele-programátora se jedná o kombinaci programátorských editorů Vim, Helix a Visual Studio Code.

Obsah

1. Lapce: kombinace Vimu, Helixu a Visual Studio Code

2. Technologie, na níž je Lapce postaven

3. Krátké zopakování: LSP (Language Server Protocol)

4. Instalace textového editoru Lapce

5. Grafické uživatelské rozhraní editoru Lapce

6. Editace souborů

7. Využití LSP

8. Instalace pluginů do editoru Lapce

9. Podpora práce se systémem pro správu verzí

10. Spouštění a ladění programů

11. Podpora editace využívající větší množství kurzorů

12. Konfigurace editoru Lapce

13. Vzdálený přístup

14. Závěrečné zhodnocení

15. Odkazy na Internetu

1. Lapce: kombinace Vimu, Helixu a Visual Studio Code

V dnešním článku se ve stručnosti seznámíme s projektem nazvaným Lapce. Jedná se o programátorský textový editor, který svým vzhledem a základním chováním připomíná známé a populární Visual Studio Code. Navíc ovšem umožňuje, a to zcela na přání uživatele, přepnout ovládání do režimu, který se podobá Vimu (či NeoVimu). Lapce díky tomu můžeme zařadit mezi modální textové editory. Navíc dokáže pracovat s větším množstvím dokumentů zobrazených typicky v jednotlivých tabech (v rámci plochy okna editoru) a samozřejmě podporuje zarovnání zdrojových kódů i zvýraznění syntaxe a v neposlední míře je podporován i Language Server Protokol, jenž umožňuje realizovat například automatické doplňování kódu, refaktoring atd. Pro zvýraznění syntaxe je použit TreeSitter, což je opět technologie, s níž jsme se již na Rootu seznámili (a to konkrétně v souvislosti s textovým editorem Helix).

Obrázek 1: Prostředí programátorského textového editoru Lapce.

Již v úvodní části dnešního článku je však nutné zdůraznit, že Lapce není (i přes použité modální ovládání a mnohdy podobné klávesové zkratky) „pouhým“ dalším klonem textového editoru Vi či Vim (zkratka „Vim“ původně znamenala „Vi iMitation“, dnes již pochopitelně „Vi iMproved“). Ve skutečnosti se jedná o zcela novou aplikaci (jak na úrovni zdrojového kódu, tak i vnitřních datových struktur a rozdělení ovládání), které přebírají dobré myšlenky modálního editoru a současně používají i některé klávesové zkratky Vimu, popř. Vimovské příkazy. Příkladem rozšíření editačních schopností Lapce je podpora pro větší množství kurzorů (tu lze do Vimu přidat formou pluginu, ovšem není tak dobře integrovaná do rozhraní Vimu).

Obrázek 2: Prostředí známého textového editoru Vim v případě jeho spuštění v terminálu. O rozdělení plochy terminálu do oken se stará Vim ve vlastní režii.

2. Technologie, na níž je Lapce postaven

V nadpisu dnešního článku je zmíněn i textový editor Helix (který byl již na stránkách Roota popsán, viz poslední kapitolu s odkazy). Je tomu tak z toho důvodu, že jak Helix, tak i Lapce je naprogramován v programovacím jazyku Rust. I pro grafické uživatelské rozhraní jsou použity knihovny Rustu, konkrétně knihovna floem (a nikoli řešení založené na webových technologiích). Výsledkem je velmi snadno instalovatelný a taktéž velmi rychlý program, což lze ocenit při editaci obrovských souborů, k čemuž se dnes ještě dostaneme.

Pro zpracování editovaných zdrojových textů, jejich formátování, refaktoring atd. se používá technologie LSP (Language Server Protocol), podobně jako v prakticky všech moderních programátorských editorech. To znamená, že je pouze nutné nainstalovat plugin pro příslušný programovací jazyk a mít k dispozici LSP pro něj. Poté je již daný jazyk integrován do Lapce.

Obrázek 3: Editace zdrojového kódu napsaného v jazyce C v editoru Lapce.

3. Krátké zopakování: LSP (Language Server Protocol)

Language Server Protocol je otevřený standard navržený takovým způsobem, aby umožňoval komunikaci mezi textovými editory, popř. mezi integrovanými vývojovými prostředími (IDE) na jedné straně a různými typy programátorských nástrojů na straně druhé. Mezi nástroje, které je díky existenci LSP možné z editoru/IDE použít, mohou patřit zejména různé lintery, statické analyzátory kódu, programy pro kontrolu stylu zápisu programů, nástroje umožňující refaktoring zdrojového kódu, teoreticky i profilery atd. Nesmíme samozřejmě zapomenout na dnes již všemi programátory očekávané nástroje pro automatické doplňování jmen funkcí, metod, objektů atd., „inteligentní“ vyhledávání ve zdrojovém kódu, doskoky na definici funkce, objektu nebo proměnné apod. Všechny tyto nástroje mohou komunikovat s editorem/IDE přímo (pokud obsahují podporu pro LSP), nebo je možné využít nějaký obecnější nástroj, který je většinou nazývaný Language Server a který podporuje větší množství funkcí (typicky vyhledání definic, refaktoring a automatické doplňování; samozřejmě v závislosti na konkrétní implementaci).

Obrázek 4: Textový editor Emacs ve funkci integrovaného vývojového prostředí.

Poznámka: samotný protokol je nezávislý na tom, jestli Language Server běží na stejném počítači jako samotný editor/IDE, či zda běží na nějakém vzdáleném serveru (jako služba). V prvním případě samozřejmě budou odezvy rychlejší a doba odezvy by v ideálním případě neměla být uživatelem vůbec zaznamenána (tj. prostředí musí reagovat do max. jedné sekundy, spíše však rychleji). Ve druhém případě se může jednat o sofistikovanější nástroje, které například používají vlastní databázi, AI modul atd.

Myšlenka, na které je language server protocol postaven, samozřejmě není nijak nová ani převratná, protože se podobný princip využíval již dříve, například v textových editorech Vim a Emacs, které takto mohly komunikovat s nástroji běžícími na pozadí (daemons), viz též https://github.com/Microsoft/language-server-protocol/wiki/Protocol-History. Příkladem může být integrace nástroje Jedi do Vimu, o níž jsme se relativně nedávno zmínili v článku Knihovna Jedi: doplňování kódu a statická analýza kódu v Pythonu.

Poznámka: to, že je LSP vůbec reálně využitelný, je do značné míry zajištěno díky vysokému výpočetnímu výkonu současných (desktopových) počítačů. Dříve byly podobné nástroje velmi úzce propojeny se samotným editorem právě z toho důvodu, aby byla odezva editoru/IDE dostatečně rychlá. Na druhou stranu se samozřejmě nejedná o univerzální řešení a dnes již například IDE specializované na jediný jazyk nebývají tolik oblíbena, jako v minulosti, což je kvůli rostoucí složitosti a provázanosti technologií v IT pochopitelné.

Obrázek 5: Dnes již historické IDE Turbo Pascalu určené pouze pro jediný jazyk. Prakticky všechny nástroje jsou nedílnou součástí tohoto IDE (s výjimkou externích nástrojů grep a Turbo Debugger).

4. Instalace textového editoru Lapce

Jak již bylo zmíněno v úvodních kapitolách, je textový editor Lapce naprogramován v Rustu. To mj. znamená, že je možné celou aplikaci přeložit do jediného binárního souboru (pro danou platformu a operační systém), takže celá instalace spočívá v pouhém stažení jediného (i když objemného) souboru. Pro získání onoho binárního souboru postačuje navštívit stránku https://lapce.dev/, která nabídne stažení verze pro detekovaný operační systém. Alternativně je možné si stáhnout variantu editoru Lapce pro odlišný operační systém, popř. pro odlišnou architekturu z adresy https://github.com/lapce/lap­ce/releases.

Získaný soubor je poměrně objemný, má cca 62 megabajtů (včetně všech potřebných knihoven, včetně GUI knihovny atd.):

$ ls -la lapce
 
-rwxr-xr-x. 1 ptisnovs ptisnovs 63101368 Dec  4 16:32 lapce
Poznámka: pro základní práci s Lapce skutečně není zapotřebí instalovat žádné další závislosti. Ovšem jak uvidíme dále, je většinou vhodné si nainstalovat rozhraní k LSP pro vámi používaný programovací jazyk.

Ve skutečnosti samozřejmě Lapce závisí na několika základních knihovnách, které si lze snadno nechat vypsat nástrojem ldd (nejedná se tedy o zcela přenositelný binární soubor, což je ale při pohledu na závislosti pochopitelné):

$ ldd lapce
 
        linux-vdso.so.1 (0x00007ffee476f000)
        libz.so.1 => /lib64/libz.so.1 (0x00007f4a00c29000)
        libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f49fd200000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f4a00c24000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f4a00c00000)
        librt.so.1 => /lib64/librt.so.1 (0x00007f4a00bfb000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f4a00bf6000)
        libm.so.6 => /lib64/libm.so.6 (0x00007f49fd51f000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f49fd022000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f4a00c59000)
Poznámka: pro operační systém Microsoft Windows je k dispozici jak balíček určený pro instalaci, tak i přenositelná verze, která nevyžaduje instalaci a lze ji spustit například z USB.

Obrázek 6: Lapce přepnutý do tmavého režimu.

5. Grafické uživatelské rozhraní editoru Lapce

Po prvním spuštění textového editoru Lapce se zobrazí (nebo by se alespoň mělo zobrazit) okno s obsahem, jaký byl již zobrazen na prvním screenshotu:

Obrázek 7: Prostředí programátorského textového editoru Lapce.

Můžeme zde vidět určitou podobnost s populárním textovým editorem (resp. dnes již s integrovaným vývojovým prostředím) Visual Studio Code. Jednotlivé části grafického uživatelského rozhraní je možné skrýt či znovu zobrazit s využitím trojice ikonek v dolní části okna:

Obrázek 8: Ikony určené pro skrytí a opětovné zobrazení jednotlivých částí grafického uživatelského rozhraní.

V levé horní části okna editoru nalezneme čtveřici důležitých ikon, které přepínají operace nabízené v levé části grafického uživatelského rozhraní:

Obrázek 9: Ikony pro výběr operací nabízených v levé části grafického uživatelského rozhraní.

Jedná se o tyto operace:

  1. Zobrazení struktury projektu a seznamu souborů.
  2. Zobrazení seznamu nainstalovaných přídavných modulů a nabízených přídavných modulů.
  3. Operace se systémem pro správu verzí (tedy dnes většinou s Gitem).
  4. Spouštění a ladění aplikace, zobrazení viditelných proměnných atd.

6. Editace souborů

Primárním úkolem textového editoru je pochopitelně zajištění editace souborů se zdrojovými texty i s konfigurací aplikace. Nejprve je nutné otevřít buď jeden soubor nebo celý adresář. Tyto operace jsou „schovány“ v menu zobrazeném po výběru ikony se třemi horizontálními řádky. Výchozí režim editoru je nemodální a připomíná tak již zmíněný Visual Studio Code:

Obrázek 10: Editace zdrojového souboru v editoru Lapce.

Relativně snadno je možné si nastavit režim částečné emulace textového editoru Vim. Postačuje kliknout na ikonu konfigurace (známé ozubené kolo) a ze zobrazeného menu vybrat položku Open Settings. V novém tabu s konfiguračními volbami se nachází výběr režimu editoru hned nahoře:

Obrázek 11: Nastavení režimu (částečné) emulace textového editoru Vim.

V nemodálním (výchozím) režimu je k dispozici i poměrně velké množství klávesových zkratek odvozených od Visual Studia Code. Pokud nastavení klávesových zkratek nevyhovuje, popř. chybí nějaká zkratka (vazba na příkaz), je možné si nastavení zkratek změnit, a to opět kliknutím na ikonu ozubeného kola (konfigurace):

Obrázek 12: Konfigurace klávesových zkratek.

Poznámka: klávesové zkratky mohou začínat i klávesou Escape, takže se potenciální množství příkazů namapovatelných na klávesové zkratky poměrně razantně zvyšuje.

7. Využití LSP

V případě, že je nainstalován LSP pro programovací jazyk, v němž jsou napsány zdrojové kódy, a pokud je navíc nainstalován i příslušný plugin (viz navazující kapitolu), bude editor Lapce v průběhu editace přes LSP volat analytické nástroje, nástroje pro doplnění symbolu atd. To například umožní zobrazení (potenciálních) chyb a varování přímo v době editace, a to bez nutnosti explicitního spouštění linterů z příkazové řádky:

Obrázek 13: Zobrazení chyb a varování nalezených v editovaném souboru.

Většina LSP umožní i zobrazení nápovědy k symbolu, na kterém se nachází kurzor. V případě editoru Lapce se nápověda zobrazí následujícím způsobem:

Obrázek 14: Zobrazení nápovědy, zde konkrétně nápovědy k importovanému modulu.

A pochopitelně je většinou (opět v závislosti na LSP) dostupné i automatické doplnění symbolu podle kontextu, v němž se nachází textový kurzor:

Obrázek 15: Automatické doplnění symbolu.

Obrázek 16: Automatické doplnění symbolu.

Operace pro změnu názvu symbolu i pro vyhledání definice symbolu, jsou dostupné přes kontextové menu nebo přes menu příkazů.

Poznámka: na druhou stranu však budete většinou postrádat pokročilejší funkce pro refaktoring či plugin pro připojení copilota.

8. Instalace pluginů do editoru Lapce

Samotný editor Lapce je sice ihned po svém nainstalování plně funkční, ovšem při editaci zdrojových kódů je vhodné Lapce propojit přes LSP s lintery a dalšími nástroji, které dokážou analyzovat a zpracovávat zdrojové kódy na vyšší úrovni, než je pouhá sekvence znaků. Pro tyto účely nabízí Lapce podporu pluginů, jež je možné nainstalovat stejně snadno, jako pluginy do Visual Studia Code. Pro zobrazení seznamu nainstalovaných pluginů i pro instalaci nových pluginů slouží levá část GUI zobrazená po výběru druhého tlačítka v levém horním rohu.

Obrázek 17: Informace o dostupném pluginu.

Po instalaci vybraného pluginu se tento plugin zobrazí v horní polovině:

Obrázek 18: Informace o nainstalovaném pluginu.

Kromě pluginů zajišťujících podporu LSP pro různé programovací jazyky již existují i další pluginy, například pro změnu barvového tématu, pluginy s fonty atd. Pluginy se programují odlišně než je tomu ve Visual Studio Code, takže nejsou zaměnitelné.

Poznámka: pluginy se instalují do adresáře ./local/share/lapce-stable/plguins.

9. Podpora práce se systémem pro správu verzí

Do editoru Lapce je integrována i podpora práce se systémem pro správu verzí (což dnes znamená Git). V současné verzi jsou podporovány jen základní operace, které by však měly pro běžné potřeby postačovat – zvýraznění provedených změn v projektu (přidané řádky, smazané řádky, modifikované řádky), commit změn do repositáře atd.:

Obrázek 19: Zobrazení seznamu změn, zobrazení změny v jednom vybraném souboru a možnost zápisu změny do systému pro správu verzí.

Poznámka: podpora pro systém pro správu verzí je ve skutečnosti poměrně nestabilní, takže například v některých případech není možné zapsat zprávu s informací o provedeném commitu. V této oblasti (ale i v jiných oblastech) je tedy stále prostor pro vylepšování funkcionality a stability Lapce.

10. Spouštění a ladění programů

Textový editor Lapce podporuje i přímé spouštění a popř. i ladění programů. Nejprve je však nutné vyplnit konfigurační soubor nazvaný run.toml, ve kterém je nastaveno, jakým způsobem se program spouští a popř. jakým debuggerem se ladí (tento soubor bude uložen v podadresáři .lapce):

Obrázek 20: Nastavení konfiguračního souboru pro spuštění, popř. ladění programu, jehož zdrojový kód je editován.

Poznámka: prozatím neexistují předpřipravené šablony se soubory run.toml pro různé ekosystémy a ani možnost nechat si tyto soubory předgenerovat. Opět se tedy jedná o oblast, která čeká na vylepšení.

11. Podpora editace využívající větší množství kurzorů

Další technologií, kterou nalezneme v textovém editoru Lapce, je podpora pro editaci založené na nastavení většího množství kurzorů (takzvaný multicursor). Nejprve je nutné k tomu určenými klávesovými zkratkami (Ctrl+L apod.) do editovaného souboru vložit větší množství kurzorů. Následně se všechny operace, což je typicky smazání textu, změna textu či vložení nového textu, budou provádět na všech místech, na nichž jsou tyto kurzory umístěny. Tyto operace jsou naznačeny na další dvojici screenshotů:

Obrázek 21: Vytvoření takzvaného multikurzoru na několika místech editovaného souboru.

Obrázek 22: Editační operace se bude týkat všech textových řádků, na nichž byl multikurzor definován.

Poznámka: teoreticky lze multikurzor použít pro přejmenování nějakého symbolu, ovšem výsledky nebudou přesné. Lepší je pro tento účel použít operaci „Rename symbol“ podporovanou většinou LSP serverů (protože LSP server lépe „rozumí“ celé struktuře projektu).

12. Konfigurace editoru Lapce

Pro konfiguraci editoru Lapce je určen dialog (zobrazený přímo v ploše editoru). Konfigurační volby jsou rozděleny podle své funkce a zahrnují i případné parametry pluginů, které jsou nainstalovány. A jak je dnes u aplikací s mnoha desítkami až stovkami voleb zvykem, lze jednotlivé volby rychle vyhledávat podle jejich jména:

Obrázek 23: Okno s konfigurací editoru Lapce.

Konfigurace je uložena v souboru ~/.config/lapce-stable/settings.toml a může vypadat například následovně:

[core]
color-theme = "Lapce Dark"
modal = false
 
[color-theme]
 
[color-theme.ui]
 
[lapce-cpp-clangd]
"volt.serverPath" = """
/usr/bin/clangd

""" 
 
[editor]
code-lens-font-size = 5
Poznámka: uloženy jsou tedy jen ty hodnoty, které se odlišují od výchozích hodnot.

13. Vzdálený přístup

Poslední vlastností textového editoru Lapce, o níž se v dnešním článku zmíníme, je podpora pro vzdálený přístup. Editor v takovém případě běží lokálně, ovšem umožňuje práci s projektem, který běží na jiném počítači popř. ve virtuálním stroji (což je taktéž vlastně vzdálený přístup). Na vzdáleném počítači poběží ovšem i všechny potřebné LSP servery, tedy například lintery atd. Výsledkem bude, že z pohledu uživatele-programátora se bude jednat o lokální operace, ovšem ve skutečnosti se budou tyto operace provádět na vzdáleném počítači. Pro navázání připojení a pro komunikaci se používá SSH.

bitcoin školení listopad 24

Obrázek 24: Konfigurace vzdáleného přístupu.

14. Závěrečné zhodnocení

Textový editor Lapce může být v budoucnosti velmi užitečným projektem, který může být dobrou alternativou k dalším programátorským textovým editorům. Použitelný je i v současnosti, ovšem stále je na něm patrné, že ještě obsahuje ne zcela odladěné části. Často se například stane, že textové okno nebo nějaký vstupní dialog nedostane fokus, takže je nutné na něj explicitně klikat myší. Plně odladěno není ani rozhraní pro systémy pro správu verzí a mnohým programátorům mohou chybět pokročilejší funkce nabízené (či naopak nenabízené) dostupnými LSP servery. Taktéž není zcela funkční code lens (zmenšení těch částí kódu, která se právě needituje), takže jsem popis této zajímavé alternativy k foldingu v článku vynechal. Dále je v porovnání s Visual Studio Code k dispozici menší množství pluginů (což je pochopitelné). Pro plnohodnotné nasazení tedy ještě – alespoň podle mého názoru – čas nenadešel, ovšem situaci okolo Lapce budeme dále sledovat.

15. Odkazy na Internetu

  1. Lapce (home page)
    https://lapce.dev/
  2. Float (GUI knihovna)
    https://github.com/lapce/floem
  3. Lapce na GitHubu
    https://github.com/lapce/lapce
  4. Lapce – Fast and Powerful Code Editor written in Rust
    https://news.ycombinator.com/i­tem?id=29549173
  5. Thoughts on some of the actively developed text editors written in Rust?
    https://www.reddit.com/r/rus­t/comments/rfx8az/thoughts_on_so­me_of_the_actively_develo­ped_text/
  6. The New Kids on the Block
    https://dev.to/eidellev/the-new-kids-on-the-block-295i
  7. Lapce – open source code editor inspired by Xi-editor
    https://www.reddit.com/r/rus­t/comments/t550wy/lapce_o­pen_source_code_editor_in­spired_by_xieditor/
  8. 10 Best Text Editors for Modern Programming Teams in 2024 (Features & Pricing Reviewed)
    https://www.taskade.com/blog/best-text-editors/
  9. What are the best programming text editors?
    https://www.slant.co/topics/12/~best-programming-text-editors
  10. Helix: nový modální textový editor inspirovaný Vimem a Kakoune
    https://www.root.cz/clanky/helix-novy-modalni-textovy-editor-inspirovany-vimem-a-kakoune/
  11. Představení Helixu
    https://helix-editor.com/
  12. Helix: A post-modern modal text editor
    https://githubplus.com/helix-editor/helix
  13. Helix na GitHubu
    https://github.com/helix-editor/helix
  14. Helix: dokumentace
    https://docs.helix-editor.com/
  15. Helix: troubleshooting
    https://github.com/helix-editor/helix/wiki/Troubleshooting
  16. Klávesové zkratky Helixu
    https://docs.helix-editor.com/keymap.html
  17. How to install the default language servers
    https://github.com/helix-editor/helix/wiki/How-to-install-the-default-language-servers
  18. Taking a look at the Helix editor (Nov 5th, 2022)
    https://www.youtube.com/wat­ch?v=8L308PdmhMY
  19. Helix – the Rust Powered Development Environment
    https://www.youtube.com/wat­ch?v=xHebvTGOdH8
  20. Python LSP setups for productive coding
    https://www.reddit.com/r/He­lixEditor/comments/13wpa72/pyt­hon_lsp_setups_for_produc­tive_coding/
  21. Helix documentation: Configuration
    https://docs.helix-editor.com/configuration.html
  22. Helix documentation: Languages
    https://docs.helix-editor.com/master/languages.html
  23. Looking to try Helix. How is support for Python?
    https://www.reddit.com/r/He­lixEditor/comments/119mhch/lo­oking_to_try_helix_how_is_sup­port_for_python/
  24. Python LSP Server (GitHub)
    https://github.com/python-lsp/python-lsp-server#configuration
  25. (dot file): Helix
    https://github.com/gerlac­dt/dotfiles/blob/e50ea089dbfd5e71e2cb6c10ab­fde305bf4a5b6e/helix/.con­fig/helix/languages.toml#L2
  26. gopls
    https://www.getman.io/posts/gopls/
  27. Kakoune: A Better Code Editor Heavily Inspired by Vim
    https://www.tecmint.com/kakoune-better-code-editor-for-linux/
  28. Kakoune demo
    https://vimeo.com/82711574
  29. 6 Best Vi/Vim-Inspired Code Editors for Linux
    https://www.tecmint.com/vi-vim-inspired-code-editors-for-linux/
  30. Why Kakoune — The quest for a better code editor
    https://kakoune.org/why-kakoune/why-kakoune.html
  31. Kakoune design
    https://github.com/mawww/ka­koune/blob/master/doc/desig­n.asciidoc
  32. Kakoune (modální textový editor)
    http://kakoune.org/
  33. Kakoune: Selections
    https://github.com/mawww/ka­koune/wiki/Selections
  34. Migrating from Vim
    https://github.com/mawww/ka­koune/wiki/Migrating-from-Vim
  35. kakoune-vertical-selections
    https://github.com/occivink/kakoune-vertical-selection
  36. Langserver.org
    https://langserver.org/
  37. Language Server Protocol
    https://microsoft.github.io/language-server-protocol/
  38. Language Server Protocol Specification
    https://microsoft.github.io/language-server-protocol/specification
  39. Implementations Language Servers
    https://microsoft.github.io/language-server-protocol/implementors/servers
  40. JSON-RPC 2.0 Specification
    https://www.jsonrpc.org/specification
  41. Why You Should Know the Language Server Protocol
    https://tomassetti.me/what-is-the-language-server-protocol/
  42. Language Server Protocol: A Language Server For DOT With Visual Studio Code
    https://tomassetti.me/language-server-dot-visual-studio/
  43. Python Language Server
    https://github.com/palantir/python-language-server
  44. Jedi – an awesome autocompletion/static analysis library for Python
    https://github.com/davidhalter/jedi
  45. What is lsp
    https://www.reddit.com/r/vim/com­ments/7lnhrt/which_lsp_plu­gin_should_i_use/
  46. Evil (Emacs Wiki)
    https://www.emacswiki.org/emacs/Evil
  47. Evil (na GitHubu)
    https://github.com/emacs-evil/evil
  48. Evil (na stránkách repositáře MELPA)
    https://melpa.org/#/evil
  49. Evil Mode: How I Switched From VIM to Emacs
    https://blog.jakuba.net/2014/06/23/e­vil-mode-how-to-switch-from-vim-to-emacs.html
  50. Vrapper aneb spojení možností Vimu a Eclipse
    https://mojefedora.cz/vrapper-aneb-spojeni-moznosti-vimu-a-eclipse/
  51. Vrapper aneb spojení možností Vimu a Eclipse (část 2: vyhledávání a nahrazování textu)
    https://mojefedora.cz/vrapper-aneb-spojeni-moznosti-vimu-a-eclipse-cast-2-vyhledavani-a-nahrazovani-textu/
  52. Emacs/Evil-mode – A basic reference to using evil mode in Emacs
    http://www.aakarshnair.com/posts/emacs-evil-mode-cheatsheet
  53. From Vim to Emacs+Evil chaotic migration guide
    https://juanjoalvarez.net/es/de­tail/2014/sep/19/vim-emacsevil-chaotic-migration-guide/
  54. Introduction to evil-mode {video)
    https://www.youtube.com/wat­ch?v=PeVQwYUxYEg
  55. Vim-style keybinding in Emacs/Evil-mode
    https://gist.github.com/tro­yp/6b4c9e1c8670200c04c16036805773d8
  56. Evil-surround
    https://github.com/emacs-evil/evil-surround
  57. Spacemacs
    http://spacemacs.org/
  58. Neovim: literally the future of vim
    https://neovim.io/
  59. AMP – A Vi/Vim Inspired Text Editor for Linux Terminal
    https://www.tecmint.com/amp-vi-vim-inspired-text-editor-for-linux/
  60. Amp: A text editor for your terminal
    https://github.com/jmacdonald/amp
  61. Stránky projektu Amp.rs
    https://amp.rs/
  62. Dokumentace k editoru Amp
    https://amp.rs/docs/
  63. Vis: a vi-like editor based on Plan 9's structural regular expressions
    https://github.com/martanne/vis
  64. Very opinionated Node.JS VI clone
    https://github.com/mikesmullin/nvi
  65. PyVim: Pure Python Vim clone
    https://github.com/prompt-toolkit/pyvim
  66. pyvim 2.0.24 na PyPi
    https://pypi.org/project/pyvim/
  67. vim2elvis (1)
    https://www.root.cz/clanky/vim2elvis-1/
  68. vim2elvis (2)
    https://www.root.cz/clanky/vim2elvis-2/
  69. Seriál Textový editor Vim jako IDE
    https://www.root.cz/serialy/textovy-editor-vim-jako-ide/
  70. Obsah Rootu označený nálepkou Vim
    https://www.root.cz/n/vim/
  71. Atom: moderní textový editor
    https://www.root.cz/clanky/atom-moderni-textovy-editor/
  72. Atom: moderní textový editor (dokončení)
    https://www.root.cz/clanky/atom-moderni-textovy-editor-dokonceni/
  73. Why I switched to VIM from Visual Studio Code
    https://freshman.tech/from-vscode-to-vim/
  74. VSCodeVim
    https://marketplace.visual­studio.com/items?itemName=vsco­devim.vim
  75. VSCodeVim/Vim na GitHubu
    https://github.com/VSCodeVim/Vim
  76. How Vim killed Atom and VSCode on my Machine
    https://medium.com/@aswinmohanme/how-vim-killed-atom-and-vscode-723a68ad59dc
  77. tree-sitter
    https://github.com/tree-sitter/tree-sitter
  78. Introduction: tree-siter
    https://tree-sitter.github.io/tree-sitter/
  79. tree-siter: Queries
    https://tree-sitter.github.io/tree-sitter/syntax-highlighting#queries
  80. Textový editor Vim jako IDE
    https://www.root.cz/clanky/textovy-editor-vim-jako-ide/
  81. Textový editor Vim jako IDE (2.část)
    https://www.root.cz/clanky/textovy-editor-vim-jako-ide-2-cast/
  82. Textový editor Vim jako IDE (3.část)
    https://www.root.cz/clanky/textovy-editor-vim-jako-ide-3-cast/
  83. Textový editor Vim jako IDE (4.část)
    https://www.root.cz/clanky/textovy-editor-vim-jako-ide-4-cast/
  84. Textový editor Vim jako IDE (5.část)
    https://www.root.cz/clanky/textovy-editor-vim-jako-ide-5-cast/
  85. A Comprehensive Introduction to Tree-sitter
    https://derek.stride.host/pos­ts/comprehensive-introduction-to-tree-sitter
  86. Guide to your first Tree-sitter grammar
    https://gist.github.com/A­erijo/df27228d70c633e088b05­91b8857eeef
  87. LR parser (Wikipedia)
    https://en.wikipedia.org/wi­ki/LR_parser
  88. GLR Parser (Wikipedia)
    https://en.wikipedia.org/wi­ki/GLR_parser

Autor článku

Vystudoval VUT FIT a v současné době pracuje na projektech vytvářených v jazycích Python a Go.