C++ mit vi(m) nutzen
C++ mit vi(m) nutzen
Hallo,
ich lese mich zur Zeit in C++ ein (Buch C++ von A bis Z) und arbeite bzw. schreibe die "Programm" mit vi(m). Da ich mich mittlerweile im Kapitel zur OOP und Klassen befinde, würde ich gerne wissen, wie ich im vi(m) dazu bringe, dass ich beim eintippen von Objekten im Hauptprogramm auch alle entsprechenden Methoden als Auswahl angezeigt bekomme.
Beispiel im Hauptprogramm:
Es existiert eine Klasse Mensch und nun erzeuge ich ein Objekt person1.
Mensch person1;
Nun greife ich auf die Methoden aus mensch.cpp wie folgt zu:
person1.print();
// oder
person1.get_name();
//...
Ich würde nun gerne nach Eingabe von
person1.
alle vorhandenen Methoden angezeigt bekommen.
Ist dies möglich?
Und wenn ja, wie?
Danke & Gruß,
Daniel
ich lese mich zur Zeit in C++ ein (Buch C++ von A bis Z) und arbeite bzw. schreibe die "Programm" mit vi(m). Da ich mich mittlerweile im Kapitel zur OOP und Klassen befinde, würde ich gerne wissen, wie ich im vi(m) dazu bringe, dass ich beim eintippen von Objekten im Hauptprogramm auch alle entsprechenden Methoden als Auswahl angezeigt bekomme.
Beispiel im Hauptprogramm:
Es existiert eine Klasse Mensch und nun erzeuge ich ein Objekt person1.
Mensch person1;
Nun greife ich auf die Methoden aus mensch.cpp wie folgt zu:
person1.print();
// oder
person1.get_name();
//...
Ich würde nun gerne nach Eingabe von
person1.
alle vorhandenen Methoden angezeigt bekommen.
Ist dies möglich?
Und wenn ja, wie?
Danke & Gruß,
Daniel
Oh, yeah!
Re: C++ mit vi(m) nutzen
Ich schreibe zwar auch in vim, aber ich nutze eigentlich nur das normale CTRL-P bzw. N. Was gut funktioniert, da ich normalerweise auch noch den Header geöffnet habe.
Für das Verhalten, das Du haben möchtest, kannst Du mal OmniCppComplete anschauen.
http://www.vim.org/scripts/script.php?script_id=1520
http://vim.wikia.com/wiki/C%2B%2B_code_completion
Für das Verhalten, das Du haben möchtest, kannst Du mal OmniCppComplete anschauen.
http://www.vim.org/scripts/script.php?script_id=1520
http://vim.wikia.com/wiki/C%2B%2B_code_completion
MfG GoKi
:wq
:wq
Re: C++ mit vi(m) nutzen
Danke, werde mir die Links mal anschauen, aber was meinst du genau mit:
Was genau machst du und was meinst du mit "Header-Datei geöffnet"?GoKi hat geschrieben:Ich schreibe zwar auch in vim, aber ich nutze eigentlich nur das normale CTRL-P bzw. N. Was gut funktioniert, da ich normalerweise auch noch den Header geöffnet habe.
Oh, yeah!
Re: C++ mit vi(m) nutzen
Ich nutze mehrere geöffnete Buffers in vim, d.h. ich habe gleichzeitig mensch.cpp, mensch.h und main.cpp geöffnet. Dann tippe ich z.B. person1.ge<CTRL-P> und sehe dann zur Auswahl alle Wörter, die mit "ge" beginnen, bspw. getAlter, getName. Ich bekomme aber auch Wörter angezeigt, die keine Methoden der Klasse Mensch sind. Dies stört mich jedoch nicht sonderlich.
Ich wollte damit eigentlich nur sagen, dass ich OmniCppComplete nicht benutze.
Allgemein nutze ich noch einige Plugins, die - wie ich finde - die Arbeit etwas erleichtern. z.B. NERDtree (Dateibrowser in vim), NERDcommenter (auskommentieren von mehreren Zeilen auf einmal), a.vim (Wechseln zwischen cpp/h), minibufexpl.vim (Anzeige alle geöffneten Buffers), copycppdectoimp.vim (Funktionsdeklaration aus dem Header ins cpp übernehmen).
Ich wollte damit eigentlich nur sagen, dass ich OmniCppComplete nicht benutze.
Allgemein nutze ich noch einige Plugins, die - wie ich finde - die Arbeit etwas erleichtern. z.B. NERDtree (Dateibrowser in vim), NERDcommenter (auskommentieren von mehreren Zeilen auf einmal), a.vim (Wechseln zwischen cpp/h), minibufexpl.vim (Anzeige alle geöffneten Buffers), copycppdectoimp.vim (Funktionsdeklaration aus dem Header ins cpp übernehmen).
MfG GoKi
:wq
:wq
Re: C++ mit vi(m) nutzen
Das hört sich sehr interessant an.
Wie kann ich sowas denn auch bei mir realisieren?
Bisher habe ich folgende Pakete installiert:
Wie kann ich sowas denn auch bei mir realisieren?
Bisher habe ich folgende Pakete installiert:
Code: Alles auswählen
root@daniel-laptop:~# dpkg -l|grep vim
ii vim-common 1:7.1.314-3+lenny2 Vi IMproved - Common files
ii vim-doc 1:7.1.314-3+lenny2 Vi IMproved - HTML documentation
ii vim-full 1:7.1.314-3+lenny2 Vi IMproved - enhanced vi editor (transition
ii vim-gnome 1:7.1.314-3+lenny2 Vi IMproved - enhanced vi editor - with GNOM
rc vim-gtk 1:7.1.314-3+lenny2 Vi IMproved - enhanced vi editor - with GTK2
ii vim-gui-common 1:7.1.314-3+lenny2 Vi IMproved - Common GUI files
ii vim-runtime 1:7.1.314-3+lenny2 Vi IMproved - Runtime files
rc vim-tiny 1:7.1.314-3+lenny2 Vi IMproved - enhanced vi editor - compact v
Oh, yeah!
Re: C++ mit vi(m) nutzen
[OT]
Solche Features führen ja doch nur zu elend langen Methodennamen und riesigen Klassen.
Wenn Klassen überschaubar sind weiß man auswendig welche Methoden sie bieten. Wenn Bezeichner kurz sind, spart es auch keine Tipparbeit.
Meist ist es also sinnvoller sich gute Programmiergewohnheiten anzueignen, statt sich auf Helferlein zustützen, die zu schlechen Angewohnheiten führen.
Diese Anmerkung zum drüber nachdenken, _nicht aber_ zum losflamen.
[/OT]
Solche Features führen ja doch nur zu elend langen Methodennamen und riesigen Klassen.
Wenn Klassen überschaubar sind weiß man auswendig welche Methoden sie bieten. Wenn Bezeichner kurz sind, spart es auch keine Tipparbeit.
Meist ist es also sinnvoller sich gute Programmiergewohnheiten anzueignen, statt sich auf Helferlein zustützen, die zu schlechen Angewohnheiten führen.
Diese Anmerkung zum drüber nachdenken, _nicht aber_ zum losflamen.
[/OT]
Use ed once in a while!
Re: C++ mit vi(m) nutzen
Die genannten Plugins findest Du alle auf der vim Homepage in der Scripts-Rubrik.
http://www.vim.org/scripts/index.php
Oder einfach per Google. Auf der Seite des jeweiligen Plugins steht meistens beschrieben, wie es zu installieren ist (üblicherweise nach ~/.vim/plugins kopieren).
Bzgl der Anmerkung von Meillo:
Natürlich sollte man trotzdem bemüht sein kurze, aussagekräftige Methodennamen zu benutzen. Ich finde jedoch, dass schon alleine CTRL-P/N einfach viel Tipparbeit sparen kann. Künstlich kurze Methoden/Variablennamen helfen nicht, wenn man den Code auch noch nach mehreren Jahren wieder verstehen und anpassen muss.
Auch Tools wie doxygen oder ähnliches mögen sinnvoll sein. Wobei ich sagen muss, dass ich kein Softwarearchitekt bin. Vielleicht kenne ich deshalb nicht alle Methodennamen der über 800 Klassen in meinem Hauptprojekt....
Letztendlich sollte jeder den für sich besten Weg finden.
http://www.vim.org/scripts/index.php
Oder einfach per Google. Auf der Seite des jeweiligen Plugins steht meistens beschrieben, wie es zu installieren ist (üblicherweise nach ~/.vim/plugins kopieren).
Bzgl der Anmerkung von Meillo:
Natürlich sollte man trotzdem bemüht sein kurze, aussagekräftige Methodennamen zu benutzen. Ich finde jedoch, dass schon alleine CTRL-P/N einfach viel Tipparbeit sparen kann. Künstlich kurze Methoden/Variablennamen helfen nicht, wenn man den Code auch noch nach mehreren Jahren wieder verstehen und anpassen muss.
Auch Tools wie doxygen oder ähnliches mögen sinnvoll sein. Wobei ich sagen muss, dass ich kein Softwarearchitekt bin. Vielleicht kenne ich deshalb nicht alle Methodennamen der über 800 Klassen in meinem Hauptprojekt....
Letztendlich sollte jeder den für sich besten Weg finden.
MfG GoKi
:wq
:wq
Re: C++ mit vi(m) nutzen
Ok, danke.
Habe mal die Sachen aus den Links installiert und konfiguriert.
Wenn ich aber jetzt in der main.cpp darauf zugreifen will, bekomme ich immer sowas:
Muster nicht gefunden. Aber wieso?
Das ^O bedeutet doch STRG+O?
Habe mal die Sachen aus den Links installiert und konfiguriert.
Wenn ich aber jetzt in der main.cpp darauf zugreifen will, bekomme ich immer sowas:
Code: Alles auswählen
// main.cpp
#include "mensch.h"
int main(void) {
Mensch person1( "Adam", 22, Mensch::MANN,
"Hund", "Dackel", "Waldi");
Haustier cat( "Katze", "Perser", "Minzi" );
Mensch person2( "Eva",19, Mensch::FRAU, cat );
Mensch person3;
cout << "Menschen: "
<< Mensch::get_anzahlMensch() << '\n';
{
Mensch person4;
Mensch person5;
cout << "Menschen: "
<< Mensch::
}
return 0;
}
~
~
~
~
~
~
~
~
~
-- Omni-Ergänzung (^O^N^P) Muster nicht gefunden
Das ^O bedeutet doch STRG+O?
Oh, yeah!
Re: C++ mit vi(m) nutzen
Ich vermute du musst die `mensch.h' gleichzeitig offen haben.Duff hat geschrieben:Muster nicht gefunden. Aber wieso?Code: Alles auswählen
~ ~ -- Omni-Ergänzung (^O^N^P) Muster nicht gefunden
Code: Alles auswählen
:sp mensch.h
Ja.Das ^O bedeutet doch STRG+O?
Use ed once in a while!