Heim > Backend-Entwicklung > C++ > C-Entwicklung mit GNU Emacs

C-Entwicklung mit GNU Emacs

Patricia Arquette
Freigeben: 2024-12-28 08:28:12
Original
695 Leute haben es durchsucht

C Development with GNU Emacs

Emacs wurde speziell für die Programmierung entwickelt, unterstützt Sprachen wie C, Python und Lisp nativ und bietet erweiterte Funktionen wie Syntaxhervorhebung, anpassbare Codierungsstile und Fehlererkennung in Echtzeit. Sein integrierter Lisp-Interpreter macht Emacs äußerst anpassungsfähig und ermöglicht es Benutzern, den Editor an bestimmte Arbeitsabläufe anzupassen oder völlig neue Funktionalitäten zu erstellen.

Sein umfangreiches Ökosystem an Erweiterungen stellt sicher, dass es in verschiedenen Bereichen relevant bleibt, vom akademischen Schreiben bis zur Systemprogrammierung, während seine anpassbare Benutzeroberfläche es Benutzern ermöglicht, ihre Umgebung für maximale Produktivität zu optimieren.

Es ist weiterhin eine zuverlässige Wahl für diejenigen, die Wert auf Kontrolle und Vielseitigkeit legen, und beweist, dass ein vor Jahrzehnten entwickeltes Tool immer noch den Anforderungen der heutigen, sich schnell entwickelnden Technologielandschaft gerecht werden kann.

Warum Emacs wählen?

Emacs ist mehr als nur ein Texteditor – es ist eine leistungsstarke, erweiterbare Plattform zum Programmieren, Schreiben und Anpassen. Im Gegensatz zu modernen Editoren wie VS Code oder IntelliJ IDEA lebt Emacs von Flexibilität und Programmierbarkeit. Es ermöglicht Benutzern, ihren Arbeitsablauf umfassend anzupassen und ihn in eine Umgebung zu verwandeln, die genau auf ihre Bedürfnisse zugeschnitten ist. Egal, ob Sie in C programmieren, große Projekte verwalten oder sogar Romane schreiben, Emacs kann sich an Ihre Anforderungen anpassen.

Für neue Benutzer mag dies überwältigend erscheinen, aber sobald Sie seine Prinzipien verstanden haben, wird Emacs zu einem Tool, das mit Ihnen wächst. Dieser Leitfaden soll Ihnen dabei helfen, eine optimierte Emacs-Umgebung einzurichten, von Grundkonfigurationen bis hin zu erweiterten Integrationen, und sicherzustellen, dass Sie bei jedem Schritt produktiv sind.

C Development with GNU Emacs

Inhaltsverzeichnis

  • init.el wird erstellt
  • Sicherstellen, dass das init.el-Verzeichnis korrekt ist
  • Grundkonfiguration für Emacs
  • Hinzufügen der Linux-Kernel-Codierungsstilmuster
  • Installieren und Konfigurieren des MELPA Package Managers
  • Installieren des Clang LSP-Servers
  • Verbesserung der C-Entwicklung mit Company, Projectile, Treemacs und Magit
  • Hinzufügen von GNU Global, GTags und Helm-Gtags
  • YASnippet für Codevorlagen verwenden
  • Semantik für kontextbezogene Navigation konfigurieren
  • Praktisches Workflow-Beispiel für die Entwicklung
  • Spickzettel
  • Referenzen für Plugins
  • Zusätzliche Lernressourcen

Schritte:

Erstellen von init.el

  1. Öffnen Sie Emacs auf Ihrem System.
  2. Verwenden Sie den Befehl C-x C-f (drücken Sie Strg und x, dann Strg und f), um eine Datei zur Bearbeitung zu öffnen.
  3. Geben Sie den Dateipfad ~/.emacs.d/init.el ein, um Ihre Emacs-Konfigurationsdatei zu erstellen oder zu bearbeiten, und drücken Sie die Eingabetaste.
  4. Fügen Sie Ihre gewünschten Konfigurationen zum Puffer hinzu. Wenn Sie fertig sind, speichern Sie die Änderungen mit C-x C-s (drücken Sie Strg und x, dann Strg und s).

Sicherstellen, dass das init.el-Verzeichnis korrekt ist

Um sicherzustellen, dass die Emacs-Konfiguration immer auf das richtige Verzeichnis für die init.el-Datei verweist, fügen Sie das folgende Snippet oben in Ihre init.el-Datei ein:

(setq user-emacs-directory "~/.emacs.d/")
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Dadurch wird die Variable user-emacs-directory explizit auf ~/.emacs.d/ gesetzt, um sicherzustellen, dass Emacs den angegebenen Pfad für seine Initialisierungsdatei und zugehörige Konfigurationen verwendet. Dieser Ansatz vermeidet potenzielle Probleme, bei denen Emacs aufgrund umgebungsspezifischer Einstellungen möglicherweise auf ein anderes Verzeichnis verweist.

Grundkonfiguration für Emacs

Hier ist ein einfaches und praktisches Emacs-Setup, das klar erklärt wird, damit Sie seinen Zweck verstehen. Diese Konfiguration verbessert die Benutzerfreundlichkeit, vereinfacht die Schnittstelle und sorgt für ein effizientes Codierungserlebnis.

Diese Zeile konsolidiert alle Sicherungsdateien in einem einzigen Verzeichnis (~/.saves). Es hält Ihre Projekte sauber und vermeidet Unordnung in Ihrem Arbeitsbereich.

(setq backup-directory-alist `(("." . "~/.saves")))
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Um Ablenkungen zu reduzieren, werden unnötige Oberflächenelemente wie Symbolleiste, Bildlaufleiste, Tooltips und Menüleiste entfernt. Eine übersichtlichere Benutzeroberfläche hilft Ihnen, sich ohne visuelles Rauschen auf das Codieren zu konzentrieren.

(tool-bar-mode -1)
(scroll-bar-mode -1)
(tooltip-mode -1)
(menu-bar-mode -1)
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Dieses Setup deaktiviert den Emacs-Startbildschirm, entfernt die Standardmeldung im *Scratch*-Puffer und stellt die Systemglocke stumm. Es schafft von Anfang an eine ablenkungsfreie Umgebung.

(setq inhibit-startup-screen t
      initial-scratch-message nil
      ring-bell-function 'ignore)
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Der Cursor ist zur besseren Sichtbarkeit auf einen Kastenstil eingestellt und der Blinkeffekt ist deaktiviert. Die automatische Paarung von Klammern und Einrückungen ist aktiviert, was die Codierung reibungsloser und schneller macht.

(setq user-emacs-directory "~/.emacs.d/")
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Zeilennummern werden global angezeigt, um die Navigation zu erleichtern, und die Spaltennummer wird in der Statusleiste angezeigt, um die Cursorposition in jeder Zeile zu verfolgen.

(setq backup-directory-alist `(("." . "~/.saves")))
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Diese Konfiguration fügt eine klare und prägnante Zeitanzeige in der Moduszeile hinzu, die Tag, Datum und Uhrzeit im 24-Stunden-Format anzeigt. Der Lastdurchschnitt wird ausgeschlossen, um die Schnittstelle minimal zu halten.

(tool-bar-mode -1)
(scroll-bar-mode -1)
(tooltip-mode -1)
(menu-bar-mode -1)
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Auswahlen ersetzen beim Tippen automatisch hervorgehobenen Text und die Integration der Zwischenablage sorgt für nahtloses Kopieren und Einfügen zwischen Emacs und anderen Anwendungen.

(setq inhibit-startup-screen t
      initial-scratch-message nil
      ring-bell-function 'ignore)
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Die gesamte Kodierung ist auf UTF-8 eingestellt, um die Kompatibilität mit modernen Textformaten sicherzustellen und Kodierungsprobleme zu vermeiden, insbesondere bei der Arbeit mit internationalem Text oder Quellcode.

(setq cursor-type 'box
      blink-cursor-mode nil
      electric-pair-mode 1
      electric-indent-mode 1)
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Syntaxhervorhebung wird global mit dem Global-Font-Lock-Modus aktiviert. Lange Linien werden im Visual-Line-Modus auf natürliche Weise umbrochen. Klammern werden hervorgehoben, wenn sich der Cursor in ihrer Nähe befindet, und kürzlich geöffnete Dateien werden für den schnellen Zugriff nachverfolgt.

(global-display-line-numbers-mode t)
(column-number-mode t)
Nach dem Login kopieren
Nach dem Login kopieren

Das Tangotango-Thema sorgt für ein optisch ansprechendes Farbschema. Die Schriftart ist auf „Consolas“ mit Fettdruck und einer Größe von 15,2 pt eingestellt, um die Lesbarkeit bei langen Codierungssitzungen zu verbessern.

(setq display-time-format "%a %b %d %R"
      display-time-interval 60
      display-time-default-load-average nil)
(display-time-mode 1)
Nach dem Login kopieren
Nach dem Login kopieren

Hinweis: Denken Sie daran, dass wir Emacs Lisp (Elisp) verwenden, eine funktionale Programmiersprache, um Emacs zu konfigurieren. Dies ist ein großer Vorteil, da es eine äußerst flexible, programmierbare Anpassung ermöglicht. Die Fähigkeit, Logik in einem leistungsstarken Lisp-Dialekt zu schreiben, macht Emacs nicht nur zu einem Editor, sondern zu einer Plattform für personalisierte Workflows.


Hinzufügen der Linux-Kernel-Codierungsstilmuster

Die unten bereitgestellte Konfiguration richtet Emacs so ein, dass er sich strikt an den Codierungsstil des Linux-Kernels hält, wobei der Schwerpunkt auf 8-stelligen Tabulatoren, der Platzierung von K&R-Klammern und einer klaren Lesbarkeit liegt. Es umfasst eine benutzerdefinierte Ausrichtungsfunktion für Argumentlisten, eine automatische Erkennung von Kernel-bezogenen Dateien (z. B. Dateien mit Kbuild-, Kconfig- oder Kernel-Headern) und wendet automatisch den entsprechenden Stil an. Dies gewährleistet Konsistenz und vereinfacht die Bearbeitung des Kernel-Codes in Emacs.

Die Funktion „linux-kernel-coding-style/setup“ konfiguriert Emacs für Kernel-spezifische Einstellungen wie „indent-tabs-mode“, „tab-width“ und „c-basic-offset“ auf 8, während die Funktion „linux-kernel-coding-style/“ Die Funktion c-lineup-arglist-tabs-only richtet Argumentlisten mithilfe von Tabulatoren aus und sorgt so für die Einhaltung der Kernel-Richtlinien. Diese Hooks wenden den Stil beim Bearbeiten von Linux-Kerneldateien automatisch auf den C-Modus an und verbessern so die Produktivität und die Einhaltung von Codierungsstandards.

(setq select-enable-primary nil
      select-enable-clipboard t)
(delete-selection-mode 1)
Nach dem Login kopieren
Nach dem Login kopieren

Fügen Sie diese Konfiguration zu Ihrer Emacs-Initialisierungsdatei (init.el) hinzu. Emacs erkennt jetzt automatisch Linux-Kerneldateien und wendet den richtigen Codierungsstil an, wodurch Sie Zeit sparen und die Einhaltung der Codierungsstandards des Kernels sicherstellen.


Installieren und Konfigurieren des MELPA Package Managers

MELPA erleichtert die Installation zusätzlicher Pakete in Emacs.

Schritte:

  • MELPA zu Emacs hinzufügen:
(setq user-emacs-directory "~/.emacs.d/")
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
  • Pakete automatisch installieren, wenn sie nicht vorhanden sind:
(setq backup-directory-alist `(("." . "~/.saves")))
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Nachdem Sie Änderungen an Ihrer init.el-Datei vorgenommen oder neue Konfigurationen hinzugefügt haben, können Sie Emacs aktualisieren, ohne es zu schließen und erneut zu öffnen:

  1. Laden Sie die init.el-Datei neu:

    • Drücken Sie M-x (Alt x), geben Sie eval-buffer ein und drücken Sie die Eingabetaste, während Sie sich in Ihrem init.el-Puffer befinden.
    • Alternativ können Sie die Abkürzung C-x C-e am Ende des Codeblocks verwenden, um ihn auszuwerten.
  2. Code manuell auswerten:

    • Wählen Sie das Code-Snippet aus, das Sie neu laden möchten, drücken Sie M-x, geben Sie eval-region ein und drücken Sie die Eingabetaste.

Dadurch können Sie Änderungen sofort und ohne Neustart an Ihrer Emacs-Konfiguration übernehmen


Installieren des Clang LSP-Servers

Das Language Server Protocol (LSP) bietet erweiterte Funktionen wie automatische Vervollständigung und Echtzeit-Fehlerprüfung.

Notwendige Anforderungen

Windows

  • LLVM/Clang:
    • Laden Sie das LLVM-Installationsprogramm von der offiziellen Website herunter: LLVM Releases
    • Achten Sie während der Installation darauf, LLVM zum Systempfad hinzuzufügen.

Linux

  • Debian/Ubuntu:
(tool-bar-mode -1)
(scroll-bar-mode -1)
(tooltip-mode -1)
(menu-bar-mode -1)
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
  • Fedora:
(setq inhibit-startup-screen t
      initial-scratch-message nil
      ring-bell-function 'ignore)
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

FreeBSD

  • clangd installieren:
(setq cursor-type 'box
      blink-cursor-mode nil
      electric-pair-mode 1
      electric-indent-mode 1)
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Schritte:

  • Installieren Sie den LSP-Modus und den Firmenmodus:
(global-display-line-numbers-mode t)
(column-number-mode t)
Nach dem Login kopieren
Nach dem Login kopieren
  • Konfigurieren Sie bei Bedarf den Pfad zu clangd:
(setq display-time-format "%a %b %d %R"
      display-time-interval 60
      display-time-default-load-average nil)
(display-time-mode 1)
Nach dem Login kopieren
Nach dem Login kopieren
  • Optional: Erweiterte Syntaxhervorhebung mit lsp-ui einrichten:
(setq select-enable-primary nil
      select-enable-clipboard t)
(delete-selection-mode 1)
Nach dem Login kopieren
Nach dem Login kopieren

Was ist LSP und warum wird es verwendet?

Das Language Server Protocol (LSP) schließt die Lücke zwischen Editoren und Programmiersprachen und bietet Funktionen wie automatische Vervollständigung, Fehlerprüfung und Codenavigation. Dies ist besonders nützlich für die C/C-Entwicklung, wo die Verwaltung von Headern, das Debuggen und das Navigieren in großen Codebasen eine Herausforderung sein können.

Durch die Einrichtung von LSP in Emacs erhalten Sie die Möglichkeit:

  • Sehen Sie sich während der Eingabe Echtzeit-Syntaxfehler an.
  • Springen Sie sofort zu Funktions- oder Variablendefinitionen.
  • Greifen Sie auf intelligente Vorschläge zum Vervollständigen des Codes zu.

Dadurch ist Emacs mit modernen IDEs konkurrenzfähig und behält gleichzeitig seine leichte und anpassbare Natur bei.

Company, Projectile, Treemacs und Magit

Zur Verbesserung Ihres Emacs-Setups für die C-Entwicklung gehört die Integration von Company, Projectile, Treemacs und Magit. Company bietet automatische Vervollständigung für die C-Programmierung und ermöglicht Echtzeitvorschläge für Funktionen, Variablen und Schlüsselwörter, wodurch die Codierung schneller und effizienter wird. Durch die Konfiguration für die Verwendung von „company-clang“ stellen Sie eine robuste Unterstützung sicher, die auf die C-Entwicklung zugeschnitten ist.

Projectile optimiert das Projektmanagement, indem es eine schnelle Navigation, Dateierkennung und Projektkompilierung ermöglicht. Es lässt sich nahtlos mit Treemacs kombinieren, das eine visuelle, baumbasierte Darstellung Ihrer Projektstruktur bietet und Ihnen dabei hilft, Dateien intuitiv zu finden und zu verwalten. Schließlich ist Magit eine erweiterte Schnittstelle für Git, die leistungsstarke Tools für die Versionskontrolle direkt in Emacs bereitstellt.

Mit Verknüpfungen wie C-x g können Sie Vorgänge wie Festschreibungen, Verzweigungen und Zusammenführungen interaktiv ausführen und so Ihren Arbeitsablauf und Ihre Produktivität verbessern. Hier ist die vollständige Konfiguration zum Einrichten dieser Tools in Ihrer Emacs-Umgebung:

(setq user-emacs-directory "~/.emacs.d/")
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Praktisches Workflow-Beispiel

Sehen wir uns an, wie Sie diese Tools in einem realen Szenario kombinieren können:

  1. Projekt öffnen:
    • Verwenden Sie C-c p f, um mit Projectile schnell eine Datei in Ihrem Projektverzeichnis zu finden.
  2. Visuell durch Dateien navigieren:
    • Öffnen Sie Treemacs mit M-0 und verwenden Sie die Pfeiltasten, um Ihre Projektstruktur zu durchsuchen. Doppelklicken Sie auf eine Datei, um sie zu öffnen.
  3. Git-Workflow mit Magit:
    • Stufenänderungen: Öffnen Sie Magit mit C-x g, drücken Sie s, um Dateien bereitzustellen.
    • Übernehmen: Drücken Sie c c, um Änderungen mit einer Nachricht zu übernehmen.
    • Push: Verwenden Sie P, um Änderungen an Ihr Remote-Repository zu übertragen.
  4. Code-Vervollständigung:
    • Geben Sie beim Bearbeiten einer .c-Datei einen Funktionsnamen teilweise ein und verwenden Sie Vorschläge für den Firmenmodus, indem Sie die Tabulatortaste drücken.

Dem Artikel hinzuzufügende Erweiterungen

  1. GNU Global- und GTags-Konfiguration:
    • Fügen Sie Anweisungen zum Einrichten von GNU Global und GTags für die Codenavigation hinzu:
(setq user-emacs-directory "~/.emacs.d/")
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
  1. Helm-Gtags-Integration:
    • Fügen Sie die Konfiguration für Helm-Gtags hinzu, um die Projektnavigation zu verbessern:
(setq backup-directory-alist `(("." . "~/.saves")))
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
  1. Yasnippet-Vorlagen:
    • YASnippet für Codevorlagen einbinden:
(tool-bar-mode -1)
(scroll-bar-mode -1)
(tooltip-mode -1)
(menu-bar-mode -1)
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
  1. Semantische Konfiguration:
    • Semantik für kontextbezogene Codevervollständigung und -analyse hinzufügen:
(setq inhibit-startup-screen t
      initial-scratch-message nil
      ring-bell-function 'ignore)
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
  1. Zusätzliche Code-Navigationsfunktionen:
    • Erwähnen Sie semantic-symref zum Sammeln von Referenzen:
(setq cursor-type 'box
      blink-cursor-mode nil
      electric-pair-mode 1
      electric-indent-mode 1)
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Diese Ergänzungen erweitern den vorhandenen Inhalt, indem sie Unterstützung für erweiterte Navigations-, Projektmanagement- und Automatisierungstools in Emacs bieten und den Artikel an Best Practices für die moderne C/C-Entwicklung anpassen.


Spickzettel

C Development with GNU Emacs

C Development with GNU Emacs


Referenzen für Plugins

  • lsp-mode: Language Server Protocol-Unterstützung für automatische Vervollständigung und Fehlerprüfung. GitHub
  • Unternehmensmodus: Kontextbezogene Autovervollständigung. GitHub
  • lsp-ui: UI-Verbesserungen für den LSP-Modus. GitHub
  • Projektil: Projektnavigation und -verwaltung. GitHub
  • treemacs: Baumbasierter Datei-Explorer. GitHub
  • magit: Git-Schnittstelle für Emacs. GitHub
  • ggtags: GNU Global-Integration für Code-Navigation. GitHub
  • helm-gtags: Navigation mit GNU Global und Helm. GitHub
  • yasnippet: Snippet-Verwaltung für wiederverwendbaren Code. GitHub
  • Semantik: Erweiterte Code-Analyse und Navigation. GNU CEDET

Zusätzliche Lernressourcen

  • Emacs für Anfänger: Eine anfängerfreundliche Anleitung zum Einrichten und Verwenden von Emacs. Link
  • Einführung in Emacs Lisp: Erfahren Sie, wie Sie Emacs mit Lisp anpassen. Link
  • Linux-Kernel-Codierungsstil: Offizielle Dokumentation zu Kernel-Codierungsstandards. Link
  • Einrichten von Emacs für die C-Entwicklung: Eine praktische Anleitung zum Konfigurieren von Emacs für die C/C-Programmierung. Link

Das obige ist der detaillierte Inhalt vonC-Entwicklung mit GNU Emacs. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage