Super, už asi čtvrt roku pracuji na AI pluginu do Vimu, má teď kolem cca 10k řádků kódu a vimdiff je jedna z věcí na které staví, tak jsem zvědavý na vylepšení.
A jsou nejake funkcni pluginy pro AI do Vimu? Zatim mi vicemene slouzi jen na doplnovani radku. CopilotChat je hezky na doplnovani nebo ptani, ale uprava kodu agenty je strasne nepohodlna, nejak mi to poradne nefunguje jak bych chtel a momentalne kvuli tomu soustavne prepinam do Visual Studio Code s Vim pluginem, ale to je fakt omezeny editor.
Asi jo, nevím, já se rozhodl si udělat vlastní a ten funguje skvěle a nějakou divnou náhodou funguje přesně tak, jak od takového AI pluginu očekávám, ale nejsem si jist, zda by to vyhovovalo někomu jinému. Zatím funguje s API pro Open AI (gpt chat) a Google (gemini), které jsou ale placené od tokenů, takže teď dokončuji takový výměnný systém přes schránku, který funguje s běžným paušálně placeným chatovacím rozhraním a také již uvažuji o integraci codex terminálu jenž může být placen paušálně.
Princip fungování mého pluginu je, že AI s každým dotazem pošlu selektivně vybraný kod automaticky vytažený ze zdrojáků (cíl je poslat co nejméně tokenů, ale všechny potřebné informace) a AI posílá v datových blocích patche na můj kód. Každý datový blok mohu snadno jedním povelem přes vimdiff porovnat se zdrojákem (sám se otevře a vyhledá se příslušná část kódu) a když jsem spokojen, druhým povelem změnu aplikovat. Za tímto účelem mám třeba analyzátor kódu, který na quick direktivu zapsanou v configu chatu (hned nad dotazem) fp:srcid:funcName vleze do zdrojáku s id srcid, a vytvoří fp (function pack) což znamená, že najde funkci funcName a všechny funkce které volá, a všechny funkce které volají tyto funkce atd, prostě celý strom a ten přibalí do zdrojů, které se pošlou ai. Krom fp mám řadu dalších direktiv. Také mám řadu účiných automatických filtrů na historii, kterou AI posílám atd za účelem jí poskytnout relevantní data očištěná od balastu. Celé je to pak souborově řízené, orientované. Každý chat představuje jeden soubor, no je to dost komplexní už. Vymyslel jsem třeba vlastní hodně úsporný a jednoduchý patch formát, ale zde tedy mám problém, že AI občas generuje nevalidní patche, takže to zatím ještě optimalizuji, zatím jsem se dostal k cca 95 % úspěšnosti.
Plugin je projektově orientovaný a nabízí mi poměrně efektivní ovládání Vimu, že už jeho funkce pro práci s kódem využívám i když AI nepoužívám.
16. 2. 2026, 11:01 editováno autorem komentáře
Hlavní rozhraní je .wai soubor v který je rozdělen na sekce a obsahuje vše, konfiguraci, instrukce, zdroje, historii, odpověď a píše se do něj i dotaz. Aby to bylo přehledné, mohutně to využívá foldování, foldů je celá řada druhů a každý fold poskytuje jiné informace (foldtext) o svém obsahu. Dále přehlednosti pomáhá vlastní syntaxe. Databloky jsou také foldy a každý datablok má vlastní syntax higlighting dle jazyka kódu, který obsahuje:
https://wraith.cz/static/wai/wai-termux.png
A k tomu existují další doplňky, třeba pro práci s chaty používám Quick Fix okno, na screenshotu seznam chatů pro wai projekt. Chaty lze vytvářet, mazat, čistit, klonovat, archivovat, je to poměrně flexibilní. Většinou je čistím, to znamená, že po splněném úkolu se vymaže kontext, last reply a podobná dočasná data a zadám v něm další úkol, ale když obsahuje nějaké zajímavé informace, tak ho zaarchivuji, pak už nejde měnit ani smazat.
https://wraith.cz/static/wai/wai2-termux.png
Já vim používám v termuxu na tabletu a v něm mohutně využívám extended keys, celý ten prostřední řádek slouží právě pro ovládání funkcí mého pluginu.
Dokud ve visual studiu nebude plny Vim, tak to nikdy nebude ono. Z visual studia stejne pouzivam jen ty agenty, ktere vlastne nepotrebuji az takovou extra funkcnost - okno s AI, a po konci prace AI zobrazeni zmen. A presne to ma delat Vim plugin CopilotChat, zdanlive dela, ale drhne to na mnoha mistech. Nastaveni kontextu nefunguje poradne a musim ho porad pridavat znova, neni schopen otevrit novy buffer s dalsim zmenenym souborem, zmena agentu taky drhne.
Videl jsem spoustu Vim pluginu ktere maji slozitejsi funkcnosti a fungovaly skvele.
A hlavne nechapem co to ma robit lebo obsah registra si viem v insert mode vlozit cez CTRL-R + REGISTER.
Vic pluginu, komplikovanejsi pluginy a vetsi vykon pluginu. Taky rychlejsi prace s velkymi soubory. A asi miilion jinych veci, ale tyhle jsou co vnimam ja osobne.
Já na něj nepřešel, Vim mi vyhovuje víc, jsem na něj zvyklý a je výborný v zachování zpětné kompatibility. Začal jsem ho používat ještě v DOSu a od té doby si udržuji a vylepšuji svůj vimrc, který dnes už dosáhl 85 kB. Je to plné různých funkcí ne úpravu textu, na správu oken atd. Vim se chová a dělá přesně to co chci a jak to chci. A vím, že mi takto bude fungovat až do mé smrti. To je pro mě vysoká hodnota. Když jsi přešel na neovim, tohle pro tebe není důležité, ten se se zpětnou kompatibilitou nepáře, co za to dává nevím. Myslím že dobře půjde používat obojí. Mě by na neovimu štvala už jen samotná lua. Na vimu mi chyběli jen dvě věci, možnost dialogových oken a doplňování v search řádku. Teď už mi chybí jen jedna.