Verwenden von Emacs als IDE
Momentan mein workflow mit Emacs, wenn ich bin Programmierung in C oder C++ beinhaltet drei Fenster. Die größte auf der rechten Seite enthält die Datei, die ich arbeite mit. Die linke ist gespalten in zwei, die untere wird eine shell, die ich verwenden, um geben zu kompilieren oder Befehle machen, und die Oberseite ist oft eine Art von Dokumentation oder README-Datei, die ich einsehen möchte, während ich arbeite. Jetzt weiß ich, es gibt einige ziemlich kompetente Emacs-Benutzer gibt, und ich bin neugierig, was die anderen Emacs funktional ist nützlich, wenn die Absicht ist, verwenden Sie es als eine komplette IDE. Speziell, die meisten IDEs in der Regel erfüllen diese Funktionen ist der einen oder anderen form:
- Source-code-editor
- Compiler
- Debugging
- Dokumentation Nachschlagen
- Version Control
- OO-features wie class-lookup-und Objekt-Inspektor
Für ein paar von diesen, ist es ziemlich offensichtlich, wie Emacs passt diese Funktionen, aber was ist mit dem rest? Auch, wenn eine bestimmte Sprache muss darauf ausgerichtet sein, würde ich sagen, sollte es C++.
Edit: Ein Benutzer darauf hingewiesen, dass ich hätte mehr spezifisch, wenn ich sagte, 'was ist mit dem rest'. Meistens war ich neugierig, effiziente Versionskontrolle, sowie der Dokumentation nachschlagen. Zum Beispiel, in dem SCHLEIM ist es ziemlich einfach zu tun, eine schnelle hyperspec-lookup auf eine Lisp-Funktion. Gibt es einen schnellen Weg, um nach etwas in der C++ - STL-Dokumentation (wenn ich vergessen, die genaue syntax von hash_map, zum Beispiel)?
InformationsquelleAutor der Frage user7545 | 2008-09-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Musst du konkreter, was du meinst mit "der rest". Mit Ausnahme der Objekt-Inspektor (, I"m bewusst), emacs macht alle oben Recht leicht:
M-x compile
und geben Sie Ihren Befehl kompilieren. Von dort aus können Sie einfachM-x compile
und verwenden Sie die Standardeinstellung. Emacs wird die Aufnahme von C/C++ compiler-Fehler (funktioniert am besten mit GCC) und helfen Sie navigieren, um Zeilen mit Warnungen oder Fehler.M-x gdb
und es wird ein gdb-Puffer mit besonderen BindungenEdit: ich weiß, meine Antwort über die Dokumentation nachschlagen wirklich handelte code-navigation. Hier ist etwas mehr auf-den-Punkt-Infos:
Google-Suche wird zweifellos zeigen weitere Beispiele.
Als der zweite link zeigt nach oben-Funktionen (und was auch immer) in anderen Dokumenten durchgeführt werden kann, wenn auch nicht out of the box unterstützt.
InformationsquelleAutor der Antwort Ben Collins
Ich empfehlen Emacs Code Browser als eher "traditionellen" - IDE-Stil-Umgebung für emacs.
BEARBEITEN: ich habe auch jetzt empfehlen Magit hoch über den standard VCS-Schnittstelle in emacs.
InformationsquelleAutor der Antwort baudtack
Anstelle der Ausführung einer make-Befehl in die shell-Fenster, haben Sie versucht, M-x compile? Es wird führen Sie Ihre make-Befehl, Fehler anzeigen, und in vielen Fällen machen es sehr leicht zu springen, um die Codezeile, die den Fehler verursacht hat, wenn die Ausgabe enthält Dateinamen und Zeilennummern.
Wenn Sie ein fan von IDEs, möchten Sie vielleicht auch zu schauen, emacs' speedbar-Paket (M-x speedbar). Und, wenn Sie nicht bereits haben, erfahren Sie, wie Sie tags verwenden, Tabellen zu navigieren Sie Ihren code.
InformationsquelleAutor der Antwort Bryan Oakley
Gibt es Ecken, emacs, einmal entdeckt, um Sie produktiver in einer Weise, die Sie nie gedacht. Wie andere erwähnt haben, mit Hilfe von tags ist eine fantastische und schnelle Möglichkeit zu Zoomen um Ihren source-code und mit M/(dabbrev-expand) oft genau das tut, was Sie erwarten, wenn Sie den Namen einer Variablen.
Verwendung auftreten, ist nützlich, um einen Puffer mit allen vorkommen eines regulären Ausdrucks in einen Puffer. Das ist wirklich praktisch, wenn code-refactoring und auf der Suche nach Fragmenten des Codes oder die Verwendung von Variablen, oder wenn Sie TODO-Markierungen in den source-Dateien, und Sie möchten, besuchen Sie alle.
flush-Linien, Art-numeric-Felder, replace-regexp und Rechteck-Funktionen können sehr nützlich für die Aufnahme einer Müllkippe aus, einige Tools und deren Umwandlung in nützliche Daten, wie eine elisp-Programm oder eine durch Komma getrennte Tabellenkalkulation.
Schrieb ich eine Seite über IDE wie Dinge, die Sie tun können, mit emacs
http://justinsboringpage.blogspot.com/2007/09/11-visual-studio-tricks-in-emacs.html
Lernen elisp ist eine weitere gute Möglichkeit, um für sich selbst beantworten, was emacs kann das tun über das hinaus, was eine typische IDE machen kann.
Beispielsweise gebloggt habe ich über das schreiben Perforce Hilfsfunktionen wie die Schuld (das schreiben Ihres eigenen bedeutet, dass Sie es machen können, Verhalten sich genau so, wie Sie wollen)...
http://justinsboringpage.blogspot.com/2009/01/who-changed-line-your-working-on-last.html
Habe ich auch geschrieben, code dynamisch erstellt Kommentare für eine Funktion an einem Punkt, entspricht der coding-standards, mit dem ich arbeite.
Keiner meiner elisp-code ist besonders groß, und die meisten davon existiert bereits in der Bibliothek, aber es ist wirklich nützlich machen zu können, emacs eigene Sachen, nur kommt während eines Arbeitstages.
InformationsquelleAutor der Antwort justinhj
Finden Sie eine detaillierte Beschreibung des emacs & version control integration auf meine Website. Ich arbeite auch an ein Artikel über die Verwendung von Emacs als Entwicklungsumgebung für viele Programmiersprachen - C/C++, Java, Perl, Lisp/Scheme, Erlang, etc...
InformationsquelleAutor der Antwort Alex Ott
Zur Versionskontrolle, es gibt mehrere Dinge, die Sie verwenden können, je nachdem, welche version control system, das Sie verwenden. Aber einige Funktionalitäten sind allen gemeinsam.
vc.el ist der integrierte Weise zu behandeln, Versionskontrolle auf Datei-Ebene. Es hat backends für die meisten version-control-Systeme. Zum Beispiel, das Subversion-backend kommt mit Emacs, und es gibt git-backends und andere aus anderen Quellen verfügbar.
Den meisten nützlicher Befehl ist C-x v v (vc-next-action), die die geeignete Aktion für die Datei, die Sie besuchen. Dies könnte bedeuten, die Aktualisierung aus dem repository oder Begehung Sie Ihre änderungen, vc.el auch bindet C-x C-q zum ein-und Auschecken von Dateien, wenn Sie ein system verwenden, muss es (wie RCS).
Andere sehr nützliche Befehle : C-x v l - und C-x v = , zeigen Sie das Protokoll und die aktuelle diff für die Datei, die Sie verwenden.
Aber für echte Produktivität, sollten Sie vermeiden, mit der einzelne-Datei vc.el andere Befehle als bei einer einfachen Dinge. Es gibt mehrere Pakete, die Ihnen einen überblick über den status Ihrer ganzen Baum, und geben Ihnen mehr Energie, und nicht zu vergessen die Möglichkeit zum erstellen von kohärenten verpflichtet, die auf mehreren Dateien.
Meisten diese sind stark beeinflusst oder auf der Grundlage der ursprünglichen pcl-cvs/pcvs für CVS. Es gibt sogar zwei von Ihnen, kommt mit subversion, psvn.el und dsvn.el. Es gibt Pakete für git, etc.
InformationsquelleAutor der Antwort dkagedal
Ich bin damit einverstanden, dass Sie sollten lernen, über M-x compile (binden, und M-x next-Fehler nach einer kurzen Tastenfolge).
Erfahren Sie mehr über die Bindungen für die Versionskontrolle (z.B. vc-diff, vc-next-action, etc.)
Blick ins Register. Sie können nicht nur erinnern Standorten in Puffer, sondern ganze Fenster Konfigurationen (C-x-r-w -- Fenster-Konfiguration-register).
InformationsquelleAutor der Antwort HD.
Okay, jeder hier ist für eine perfekte Hinweise, um emacs-eine tolle IDE.
Aber jeder sollte im Hinterkopf behalten, dass, wenn Sie passen Sie Ihre emacs mit viel Erweiterung (vor allem mit denen für Typ-checking on-the-fly-Funktion-definition-lookups etc.) Ihre emacs lädt sehr, sehr langsam für einen editor.
Zu umgehen, würde ich empfehlen emacs in
server mode
.Es ist ziemlich einfach zu bedienen, keine Notwendigkeit zum anpassen der init-Datei.
Sie brauchen nur zu starten emacs-daemon-mode;
Dadurch wird ein emacs-server, dann können Sie verbinden Sie es entweder vom terminal oder in der gui. Ich würde auch empfehlen, auf der einige Aliase, um es einfach zu nennen.
Diese Weise, emacs startet sogar schneller als gedit, Versprechen.
Die ein mögliches problem hier, wenn Sie mit emacs-daemon aus Ihrer casual user, können nicht Sie wahrscheinlich schließen Sie emacs-server als
root
.Also, wenn Sie brauchen, um eine Datei zu öffnen, die hat root-Zugang; Nutzung
tramp
statt. Führen Sie einfach Ihre emacs-client mit deinem normalen Benutzer und geöffneten Dateien wie dieses;Das machte mein Leben einfacher, ich kann offen meine schwere kundenspezifische python-IDE in Millisekunden auf diese Weise. Sie können auch hinzufügen möchten emacs-daemon auf Ihrem system startup, oder erstellen Sie eine desktop-Datei für emacsclient. Das ist bis zu Ihnen.
Mehr auf emacs-daemon-und emacs-client finden Sie im wiki;
http://www.emacswiki.org/emacs/EmacsAsDaemon
http://www.emacswiki.org/emacs/EmacsClient
InformationsquelleAutor der Antwort Muhammet Can
Ausgangspunkt (die möglicherweise nicht so offensichtlich) für die Erkundung der VC features von Emacs ist M-x vc-next-action -.
Tut es der "nächste logische version-control-Bedienung" auf die aktuelle Datei, je nach dem Zustand der Datei und die VC-backend. Also, wenn die Datei nicht unter Versionskontrolle, er registriert es, wenn die Datei geändert wurde, die änderungen sind eingereicht etc.
Dauert es ein wenig gewöhnungsbedürftig, aber ich finde es sehr nützlich.
Standard-Tastenbelegung ist C-x v v
InformationsquelleAutor der Antwort Chopmo
Gibt es eine TFS.el for emacs-integration in Microsoft TFS. Es funktioniert mit jedem TFS, einschließlich der TFS läuft Codeplex.com.
Grundlegenden Schritte zum einrichten:
Platz tfs.el im load-path.
In Ihr .emacs-Datei:
auch in Ihrem .emacs-Datei lokal oder global key bindings für die tfs-Befehle. etwa so:
InformationsquelleAutor der Antwort Cheeso
kompilieren nächsten Fehler, und die bisherigen Fehler sind alle ziemlich wichtige Befehle für die C++ Entwicklung in Emacs (funktioniert Super auf grep-Ausgabe). Etags, visit-tags-table und finden-Tags sind ebenso wichtig. die Fertigstellung.el ist einer der großen unbesungenen hacks of the 20th century, und können die Geschwindigkeit Ihres C++ - Hacker um ein Vielfaches. Oh, und vergessen wir nicht, ediff.
Ich habe noch zu lernen, wie man version control ohne den Besuch einer shell, aber jetzt, ich bin verpflichtet, so viel häufiger (mit git) werde ich wohl müssen.
InformationsquelleAutor der Antwort jfm3
Vielleicht finden Sie auch tabbar nützlich. Es emuliert das einzige Verhalten, das ich verpasste, wenn Sie sich von Eclipse, Emacs. Gebunden "," und "." für den übergang zu den nächsten und vorherigen tab-Leiste, die es durchlebt, die Sie von einem Wechsel der Puffer mit Ctrl-x b die ganze Zeit.
Leider der genannten web-Seite nicht die richtige version herunterladen. Die meisten Ubuntu-Versionen, allerdings liefern Sie in Ihrem emacs-goodies-Pakete.
InformationsquelleAutor der Antwort wr.
Benutze ich emacs auf Windows. die compile-Modul ist nett, aber ich wollte kompilieren schlauer werden über den Befehl kompilieren Linie es andeutet. Es ist möglich, verwenden Sie "Datei-Variablen" wenn Sie
compile-command
, aber ich wollte etwas ein wenig klüger als das. Also schrieb ich eine kleine Funktion, um zu helfen. Es errät die compile-Befehl verwenden, um den Benutzer auffordern, beim laufencompile
.Denke, die Funktion sieht für eine vbproj-oder csproj-oder sln-Datei, und wenn diese gefunden werden, schlägt vor, msbuild. Dann sieht er auf die Puffer-Datei Namen, und je nachdem, schlägt verschiedene Dinge. Ein .wxs-Datei bedeutet, es ist ein WIX-Projekt, und Sie wahrscheinlich wollen, um ein MSI zu erstellen, so die Vermutung Logik legt nahe, eine nmake-Befehl für die MSI. Wenn es ein Javascript-Modul, dann der Vorschlag ist zu laufen jslint-for-wsh.js zu lint .js-Datei. Als Alternative schlägt Sie vor, nmake.
Den code, den ich benutze sieht wie folgt aus:
Ich habe versucht zu tun, als "vor-Rat" für die compile-Funktion, aber konnte es nicht zufriedenstellend zu arbeiten. So definierte ich eine neue Funktion und binden Sie es an der gleichen Tastenkombination, ich habe mit für
compile
.InformationsquelleAutor der Antwort Cheeso
Dokumentation-Suche: das hängt davon ab, Ihre Programmiersprache(N).
C-Bibliotheken und Systemaufrufe sind in der Regel dokumentiert in der man-Seiten. Für die, die Sie verwenden können
M-x man
. Einige Dinge können dokumentiert werden besser in die info-Seiten; verwenden SieM-x info
.Für elisp selbst, verwenden Sie
C-h f
. Für python, verwenden Sie>>> help(<function, class, module>)
im interpreter.Finde ich, dass die meisten anderen Sprachen bieten-Dokumentation in html-form. Für die, die versuchen, ein embedded browser (ich benutze w3m). Stellen Sie Ihre
BROWSER
Umgebungsvariable ein wrapper-Skript umemacsclient -e "(w3m-goto-url-new-session \"$@\")"
(auf *nix), in dem Fall, dass etwas möglicherweise öffnen Sie einen browser und Sie wollen, dass es geöffnet innerhalb von emacs.InformationsquelleAutor der Antwort Jonas Kölker
In den letzten Jahren, das Geräusch wurde zu einem wichtigen Teil der Emacs C++ - Unterstützung. Atila Neves hatte einen Vortrag über CppCon 2015:
"Emacs als C++ IDE"
Es ist ein 16-minütigen Vortrag, wo er zeigt Lösungen für folgende Themen:
Folien finden hier.
InformationsquelleAutor der Antwort Philipp Claßen
In der Unix-oder windows X-style, ich weiß nicht, es ist eine integrierte IDE, die für alles funktioniert.
Für die Interaktion mit Debugger, nur eine Komponente von einer IDE -, betrachten realgud. Die andere Sache, die es hat, die ich nützlich finde, sind Parser für Standort-Nachrichten, so dass, wenn Sie eine call-stack-trace und Bearbeiten wollen, an einem bestimmten Ort in der callstack, dieser front-end-Schnittstelle kann das tun.
Weit diesem Programm verbessert werden könnten. Aber dann könnte es auch Menschen, die daran arbeiten, es zu verbessern.
Disclaimer: ich arbeite auf realgud
InformationsquelleAutor der Antwort rocky