Portál AbcLinuxu, 30. dubna 2025 14:00
Ve zprávičkách jsem zahlédl informaci o doplňování kódu ve skvělém editoru VIM, který se učím používat. Pořád mi v něm ale něco chybělo, rozhodl jsem se tedy IComplete vyzkoušet (domovská stránka a screenshoty). Nakonec to nebylo tak jednoduché, jak by se mohlo na první pohled zdát.
ICompletion je napsáno v C, na Vim je napojeno pomocí skriptu a nových vlastností Vim7, které umožňují doplňování kódu závislé na kontextu. Po napsání strukturovaného typu se Vám v dolní čáasti obrazovky otevře další okno, které obsahuje seznam členů a metod objektu se stručným popisem. IComplete dokáže napovídat také seznam argumentů právě psané funkce, jména lokálních i globálních proměnných či funkcí, jména statických členů a metod objektu. Přestože nedosahuje kvalit doplňování některých komerčních vývojových prostředí, nabízí to, co spousta lidí již dlouho ve Vimu hledá.
K funkci je potřeba Vim7, který jsem objevil snad jen v distribuci Gentoo. Musel jsem tedy provést stažení a kompilaci kódu, což se překvapivě neprovádí známou trojicí, ale systémem Aap.
mkdir ~/aap cd ~/aap cvs -d:pserver:anonymous@cvs-pserver.sf.net:80/cvsroot/a-a-p checkout Exec cd Exec su ./aap install
Update Aap se provede posloupností:
cd ~/aap/Exec ./aap uninstall cvs update ./aap installAap nemusíte instalovat jako root, pak se Vám nahraje do
~/lib
a vytvoří link v ~/bin
, později ale stejně budete pravděpodobně instalovat Vim7 pro celý systém, takže je to možná zbytečné.
Po instalaci aap si vytvoříme adresář ~/viminstall
a v tomto adresáři spustíme:
aap -f http://www.a-a-p.org/vim7/main.aap su aap install
Pro update programu:
aap uninstall aap update aap install
Nyní bychom měli mít nainstalovaný Vim7 v /usr/local
. Podíváme se tedy na IComplete, kde je situace již podstatně jednodušší. Stáhneme poslední verzi, kterou najdeme zde, rozbalíme a použijeme klasiku. Problém může nastat, pokud v systému máte nainstalované exuberant-tags, ale alias ctags neexistuje, pak předejte configure ještě parametr CTAGS_CMD=exuberant-ctags
.
./configure --datadir=/usr/local/share make su make install
Máme vše nainstalováno, ale ještě není vyhráno. Vytvoříme si testovací soubor test.cc s obsahem:
#include <string> #include <iostream> using namespace std; typedef struct pokus { int a; string b; char c; } pokus; main() { pokus p; string str = "blabla"; p.a = str.length(); cout << str << ", pocet znaku: " << p.a << endl; }
Provedením icomplete -l 15 -c 6 test.cc
byste měli dostat
class:pokus | scope: a: int a b: string b c: char c
To už máme téměř vyhráno, aby nám fungovalo doplňování i u STL tříd, musíme do souboru /etc/icomplete.conf
přidat cesty k hlavičkovým souborům. U mě na Mandriva Linuxu LE2005 se nacházejí v adresáři /usr/include/c++/3.4.3. Nyní zkuste spustit icomplete -l 15 -c 14 test.cc
a pokud máte štěstí dostanete přehled členů a metod třídy string.
Spusťte nainstalovaný Vim /usr/local/bin/vim
a vyzkoušejte napsat za str
tečku nebo ->
, mělo by fungovat též doplňování statických členů a metod po ::
. Doplňování kódu si vynutíme stiskem Ctrl-X, Ctrl-U, rebuild cache provedeme Ctrl-X, Ctrl-X, Ctrl-U, co chceme doplnit vybíráme vpřed pomocí Ctrl-J nebo zpět Ctrl-K.
Doufám, že Vám tento návod pomohl a nemuseli jste si vyměnit několik mejlů s autorem jako já . Další informace naleznete na stránce projektu.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.