Vim lernen
-
vim ist doch total überholt ...
-
VitC schrieb:
Achja, nutzen wirklich so viele Vim als IDE? Ich dachte, die sind eher in der Minderheit.
In der absoluten Minderheit gemessen an allen Programmierern. Emacs/vim fühlt sich unter Windows als IDE imho auch als Fremdkörper an.
VitC schrieb:
Header/Source Switching und Funktionen zum Aufruf verfolgen etc. sind doch alles Standardgeschichten jeder IDE, genau wie Intellisense.
Geht alles mit vim und emacs. Nur (meistens) nicht von Haus aus. Liegt daran, dass vim ein erweiterterer Editor und emacs eine zur Laufzeit selbst erweiterbare Plattform ist.
VitC schrieb:
Ich bezweifle auch nicht das eingefleischte Vim-User schneller sind, nur verbringe ich die wenigste Zeit eigentlich mit Eingeben von Code, sondern mehr mit Fehlersuche, Analyse, Recherche, Planung, Tests usw.
Dann macht vim für dich keinen Sinn. Ausser du rechnest die postulierte Zeitersparnis über die Jahre und kommst zu einem anderen Schluss. Ich verwende den Editor meiner Wahl auch zum Erstellen von Dokumenten, Zeit- und Aufgabenplanung, zum Verfassen von Mails, für einfache spreadsheets, Präsentationen, … . Da kommt einiges zusammen.
VitC schrieb:
Zudem finde ich mal weg von der Tastatur zu kommen viel gesünder. Da Abwechslung für die Hände immer gut ist, auch wenn das Mehrarbeit ist, ist es einfach entspannter. Haltungswechsel ist immer sehr gesund und daher immer zu bevorzugen.
Einige vim/emacs user verwenden deshalb spezielle Tastaturen oder sogar Pedale. Eine automatisierte Arbeitsumgebung reduziert zudem den Tippaufwand.
Mechanics schrieb:
Da bin ich auch zu sehr Visual Studio gewohnt und da funktioniert Intellisense und Debugging nun mal sehr viel besser.
Jein und jein. Für C und C++ werden die Unterschiede bei der Autovervollständigung dank clang immer geringer (existieren aber noch). Bei dynamischen Sprachen erkenne ich keinen Unterschied zu anderen IDEs. Debugging ist bis auf wenige Ausnahmen (Python) in vim eine Katastrophe. Einige lassen deshalb einen eigenständigen Debugger laufen, fangen dessen Ausgabe ab, und übergeben die Zeilennummer an vim, um nicht selber hin und her springen zu müssen.
Mechanics schrieb:
Auch kann man schnell mit der Maus über irgendwas drüberfahren und sehen, was das ist.
Für C und C++ funktioniert das. Zwar nicht mit der Maus, aber mit Cursor setzen und Taste drücken. So kommt man auch zu einer Inline-Dokumentation, sofern vorhanden.
-
Swordfish schrieb:
vim ist doch total überholt ...
Deshalb gibt es ja auch neovim.
-
ICH HAB MEINE ÜBRIGENS NICHT ANDERS BELEGT WEIL ICH OFT SCHREIE IM NETZ
notfalls einfach mit dem schweißbrenner rangehen und das scheissding rausflexen
dazu sagt man auch "die kuh vom eis holen".
-
Ich kann vim eigentlich nicht unbedingt empfehlen. Es ist das Programm, welches extrem schwer zu bedienen ist. Das Bedienkonzept ist veraltet. Und irgendwie meine ich das ernst (hier steht übrigens kein smiley).
Ich selbst verwende vim, bzw. gvim ohne Plugins auf Linux und auch Windows. Ich möchte selbst keinen anderen Editor mehr verwenden. Die Toolbar und Menübar sind bei mir weg konfiguriert. Die stören mich nur.
Aber ich verwende ihn praktisch täglich seit etwa 19,5 Jahren. Ich habe nämlich Mitte 1995 mit Unix angefangen und da war der vi einfach da. Da musste ich mich rein arbeiten.
Wenn ich einen Debugger brauche, dann nehme ich nemiver, insight oder kdebug. Und wenn ich den Fehler gefunden habe, dann öffne ich in vim die fehlerhafte Datei und suche mir die Stelle. Die Fehlersuche benötigt ein vielfaches der Zeit im Vergleich zur Navigation zu der fehlerhaften Stelle. Und so oft debugge ich wirklich nicht.
Ich frage mich, ob ich zu bequem bin, die Bequemlichkeit einer IDE zu verwenden oder sind die IDE-User zu bequem, vim zu verwenden
.
Der Vorteil meiner Arbeitsweise ist, dass ich die Umgebung jederzeit einfach reproduzieren kann. Ich habe schon viele Umgebungen erlebt und der vim war und ist immer ein treuer Begleiter. Ich fände es eher lästig, immer eine IDE einzurichten bevor ich arbeiten kann.
Manchmal habe ich auch das Gefühl, viele lernen Programmieren durch Autovervollständigung. Das mag eine Lösung sein aber solide Kenntnisse baut man sich damit ganz bestimmt nicht auf.
Und nochmal: überlege Dir gut, ob Du Dir wirklich vim antun willst. Ich bin glücklich damit aber würde es nicht als die ein und alles selig machende Technik hin stellen. Aber ich glaube, dass die Wichtigkeit der IDE überschätzt wird.
-
Eine IDE einrichten dauert bei mir ein paar Minuten, wenn der Compiler und alles vorhanden ist. Ohne Autocomplete kommt es nun einmal immer mal zu Tippfehlern, die kosten einfach Zeit und diese Fehler sind heute einfach unnötig. Noch besser ist man natürlich bei VM-Sprachen dran, da muss man bei vielen Fehler nicht mal kompilieren, sondern bekommt die sofort angezeigt und einen Lösungsverschlag präsentiert. Ich finde die Hilfe von modernen IDEs wirklich gut.
Nichts ist mir wichtiger als Spaß beim Programmieren zu haben und Zeit zu sparen. Wenn du so mit vim zurechtkommt ist das doch toll. Ich komme mit IntelliJ und Java am entspanntesten zum Ziel und darum ziehe ich Java mit ordentlicher IDE auch immer C++ vor, wenn es geht. Ja, ich weiß "Real Programmers" und so, aber aus dem Alter bin ich raus. Ich nutze das was am besten zu mir passt und das ist nicht C++ und auch nicht der Vim.
-
Ich will nach ein paar Wochen mal Bilanz ziehen:
wenn man Vim konsequent benutzt, lernt man den Umgang sehr schnell, aber man ist wirklich erst schneller als mit einer normalen Klickibunti-IDE, wenn man ein paar Plugins installiert.
Mit YouCompleteMe, Vim-Autoclose, UltiSnipMate und NERDTree sowie ein paar eigenen kleinen Anpassungen für Einrückungen und Auto-Completions muss ich sagen, dass ich deutlich Tipparbeit spare. Ich kann es bisher nur empfehlen, auch wenn man erst mal 'ne Menge Arbeit in das Lernen und Einrichten investieren muss. Zum Glück gibt es genug Leute, die sich die Zeit nahmen, die VIM-Scriptsprache zu lernen, um Sachen zu schreiben, die man dann nur noch zusammenkopieren muss. Aber jetzt funktioniert die Auto-Einrückung und Completion exakt so, wie ich sie will und nicht, wie eine IDE sie mir á la "Friss oder stirb" anbietet.
-
Und sobald du mit modernen IDEs und Editoren arbeitest kommst du nicht mehr klar, weil du voll auf VIM gepolt bist. Ich glaube nicht, dass du mit VIM z.B. schneller bist als wenn du mit IntelliJ oder so programmierst, wo man beim Tippen einer nicht vorhandenen Methode gleich gefragt wird, ob man diese anlegen lassen will und das ist nur EIN nettes Features was das Leben mit einer modernen IDE schneller macht. Sachen wie automatisches Einrücken, Arbeiten auf Wort und Zeilenebenen mit nur einem Shortcut etc. sind heute selbstverständlich, da braucht es kein VIM zu.
-
Jodocus schrieb:
Ich will nach ein paar Wochen mal Bilanz ziehen:
wenn man Vim konsequent benutzt, lernt man den Umgang sehr schnell, aber man ist wirklich erst schneller als mit einer normalen Klickibunti-IDE, wenn man ein paar Plugins installiert.
Mit YouCompleteMe, Vim-Autoclose, UltiSnipMate und NERDTree sowie ein paar eigenen kleinen Anpassungen für Einrückungen und Auto-Completions muss ich sagen, dass ich deutlich Tipparbeit spare. Ich kann es bisher nur empfehlen, auch wenn man erst mal 'ne Menge Arbeit in das Lernen und Einrichten investieren muss. Zum Glück gibt es genug Leute, die sich die Zeit nahmen, die VIM-Scriptsprache zu lernen, um Sachen zu schreiben, die man dann nur noch zusammenkopieren muss. Aber jetzt funktioniert die Auto-Einrückung und Completion exakt so, wie ich sie will und nicht, wie eine IDE sie mir á la "Friss oder stirb" anbietet.gib es auch ein plugin das mir zeigt wo eine Funktion verwendet wird?
also zB wenn ich mehrere Klassen habe mit einer Methode getName, und mich mag nur die Aufrufe von einer Klasse suchen, geht das?
und auch zB nur von einer Klasse getName umbenennen.
serach replace kann man ja da nicht verwenden weil ich muss ja wissen das variable.getName
vom entsprechenden Typ ist.auch ja, das interessiert mich auch.
schnell zur Implementierung einer Funktion springen,
eventuell sogar wie es eclipse macht die aufgerufene Funktion , oder auch eine Macro Expansion, in einem overlay anzeigen so das man sieht was passiert aber nicht die aktuelle Datei verlassen muss.
und zwischen header und source springen, wenn header zb ../../include/foder ist oder sonst wo und nicht um selben folder.
-
Ich glaub das geht mit dem ctags-Plugin, hab ich aber noch nicht probiert.
-
VIMvsIDE schrieb:
Und sobald du mit modernen IDEs und Editoren arbeitest kommst du nicht mehr klar, weil du voll auf VIM gepolt bist. Ich glaube nicht, dass du mit VIM z.B. schneller bist als wenn du mit IntelliJ oder so programmierst, wo man beim Tippen einer nicht vorhandenen Methode gleich gefragt wird, ob man diese anlegen lassen will und das ist nur EIN nettes Features was das Leben mit einer modernen IDE schneller macht. Sachen wie automatisches Einrücken, Arbeiten auf Wort und Zeilenebenen mit nur einem Shortcut etc. sind heute selbstverständlich, da braucht es kein VIM zu.
So drastisch sehe ich das nicht. Der Umgang mit IDEs ist kinderleicht und intuitiv, da gibt's nichts dran zu vergessen. Aber der Grad von Vervollständigung und Completions, den ich in Vim bekommen kann, hab ich noch in keiner IDE gesehen. Ich bereue meine Entscheidung bisher nicht.
-
Ein Problem von VIM ist, dass die Plugins den Editor blockieren. Je nach Benützung fällt das auf oder auch nicht. Sollte es dich eines Tages nerven und neovim noch nicht ready sein: emacs mit evil-mode.
-
Jodocus schrieb:
Ich will nach ein paar Wochen mal Bilanz ziehen:
wenn man Vim konsequent benutzt, lernt man den Umgang sehr schnell, aber man ist wirklich erst schneller als mit einer normalen Klickibunti-IDE, wenn man ein paar Plugins installiert.
Mit YouCompleteMe, Vim-Autoclose, UltiSnipMate und NERDTree sowie ein paar eigenen kleinen Anpassungen für Einrückungen und Auto-Completions muss ich sagen, dass ich deutlich Tipparbeit spare. Ich kann es bisher nur empfehlen, auch wenn man erst mal 'ne Menge Arbeit in das Lernen und Einrichten investieren muss. Zum Glück gibt es genug Leute, die sich die Zeit nahmen, die VIM-Scriptsprache zu lernen, um Sachen zu schreiben, die man dann nur noch zusammenkopieren muss. Aber jetzt funktioniert die Auto-Einrückung und Completion exakt so, wie ich sie will und nicht, wie eine IDE sie mir á la "Friss oder stirb" anbietet.Das finde ich ja sehr interessant. Finde ich echt toll, dass Du Dich auf Vim eingelassen hast und uns jetzt an Deinen Erfahrungen teilhaben lässt.
Wie ich ja schon geschrieben habe bin ich ja auch Vim-User. Allerdings ohne Plugins. Ich habe meine .vimrc, die ich überall hin kopiere, wo ich arbeite. Das reicht mir.
Ich halte die IDE für überbewertet. Wer gerne eine IDE benutzt und sich damit wohl fühlt, soll das tun. Software entwickeln besteht aus viel mehr als Tippen. Und daher ist die Tippgeschwindigkeit nicht wirklich ausschlaggebend für die Entwicklungsgeschwindigkeit. Ich finde es wichtig, dass man durch das Werkzeug in seinen Gedanken nicht abgelenkt wird. Wenn ich Vim benutze, dann brauche ich mir keine Gedanken zu machen und konzentriere mich ganz auf das aktuelle Problem.
Es ist interessant, wie viele ihren Weg als den einzig wahren dar stellen. Ich sage explizit, dass ich vim sehr gerne benutze. Ich brauche auch keine Plugins. Auch hat es mich noch nie gestört, dass vim Skripte den Editor blockieren. Und wenn das dann doch mal geschehen sollte, dann sollte es nicht nerven. Ein wenig mehr Gelassenheit ist immer gut.
Wenn ich wissen will, wo eine Funktion definiert oder benutzt wird, verwende ich entweder mein Hirn oder grep. Grep liefert in der Regel mehr, als ein intelligenteres Tool aber selten so viel, dass man damit nicht zurecht kommt. Für grössere Änderungen, also zu Neudeutsch "Refactoring", verwende ich entweder den Vim Makrorekorder oder manchmal ein sed-, awk- oder Perl-Skript. Sicher ist das deutlich langsamer als ein Refactoring-Tool aber so oft mache ich das wirklich nicht. Und in der Praxis hat man sehr oft mit Code zu tun, der möglicherweise schon lange in Produktion ist. Der wird eh nicht alle Nase lang refactored.
-
Jodocus schrieb:
Hallo,
ich wurde beim Programmieren in C++ bisher immer von Visual Studio verwöhnt (besonders mit dem integrierten Debugger, Go to Definition etc.), aber jetzt, wo ich mal ausschließlich auf Linux arbeiten will, muss ich sagen, dass mich hier jede IDE nur ankotzt (hab Code::Blocks, CodeLite und Eclipse probiert).
Da würde mich jetzt interessieren, was dich an Eclipse gestört hat?
Ansonsten könntest du noch KDevelop ausprobieren.Vim nutze ich nicht zum Programmieren, da ich der Meinung bin, dass eine IDE wesentlich geeigneter dafür ist.
Das größte Problem bei Vim im Bezug aufs Programmieren ist die fehlende Integration eines Debuggers und der damit fehlenden ansicht aller Variablen, die man in der Debuggeransicht mit jedem step überwachen will.Gdb ist hier leider auch viel zu umständlich. Ich habe ihn damals mal ausgiebig getest und da hat mich irgendwas gestört, ich bin mir aber nicht mehr sicher ob es folgendes war:
Ich glauube, dass man jedes mal, nach jedem step erneut die Varibalenanzeige auflisten musste, dass fand ich schon sehr umständlich im Vergleich zu einer IDE.
Denn wenn ich in einer IDE im Debugger auf den next Button klicke, dann wurden Änderungen sofort in der Debuggeransicht angezeigt.Deswegen, weil vim allein zum Debugger nichts taugt und gdb allein auch nicht viel besser ist, bin ich von der vim+gdb Kombi wieder weggekommen.
Ich bin daher auch nicht der Meinung, dass Vim zum Programmieren geeignet wäre.
Auch wenn es irgendwie geht, so geht es doch grottig.Für das Editieren von einfachen Konfigurationsdateien finde ich Vim aufgrund der hohen Einarbeitungszeit, bis man ihn im FF beherrscht auch wenig sinnvoll.
Denn dafür sind die Konfigurationsdateien einfach viel zu klein und überschaubar, dass es wert wäre, dafür extra vim zu lernen.
Nano reicht für die Konfigurationsdateien in Linux deutlich.Insofern bin ich der Meinung, dass sich Vim eigentlich nur dann lohnt, wenn man damit nicht programmieren möchte und sehr lange Textdateien zu bearbeiten hat.
Für TeX bzw. LateX Dokumente dürfte vim daher ideal sein, denn die können sehr groß werden, im Vergleich zu Konfiguraitonsdateien und sie brauchen keinen Debugger, wie bei einer Programmiersprache.Wer TeX bzw. LateX nicht nutzt, der bracht daher kein Vim.
Es gibt bessere Lösungen zum Programmieren.Eclipse hat nen gut integrierten Debugger für C und C++ Programme, so etwas wie Intellisense und auch sonst alles, was eine IDE haben sollte, mehr brauche ich nicht.
Der einzige Kritikpunkt wäre vielleicht der Resourcenbedarf, aber dafür habe ich ja nen starken Rechner mit viel RAM.
Besonders schön ist allerdings, dass man Eclipse auch unter Windows nutzen kann.
Damit ist er für die Crossplattform Entwicklung ideal, weil nur eine Projektdatei notwendig ist.
Visual Studio kann ich nicht unter Linux nutzen und KDevelop macht auch unter Windows keinen Spaß. Eclipse läuft dagegen auf beiden Plattformen beidermaßen.