Portál AbcLinuxu, 2. června 2024 01:28

Code completion ve VIMu

22.5.2005 17:55 | Přečteno: 2505× | HOWTOs | poslední úprava: 25.5.2005 09:51

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 install
Aap 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.

       

Hodnocení: -

zatím nehodnoceno
        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

22.5.2005 20:53 doubleZ | skóre: 24 | blog: smazano
Rozbalit Rozbalit vše mozna
Odpovědět | Sbalit | Link | Blokovat | Admin
heh, mozna to zkusim:-) kazdopadne diky za zapis, pokud to budu zkouset, tak mi zapis pomohl, btw, jak je na tom vim7 se stabilitou?
elviin avatar 25.5.2005 00:17 elviin | skóre: 29 | blog: elviin | Plzeň-Praha
Rozbalit Rozbalit vše Re: mozna

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.