- Wenn wir
~/.emacs.d/init.el
für verschiedene Zwecke mehr und mehr Zeilen hinzufügen (für den Python-Modus, für emacs-eclim, für ...), wird die Datei lang und weniger lesbar. Gibt es eine Möglichkeit, den Inhalt zu organisieren? Meine aktuelle
~/.emacs.d
sieht so aus$ ls * init.el auto-save-list: elisp: python-mode.el-6.1.3 elpa: archives auctex-readme.txt s-20140910.334 auctex-11.87.7 emacs-eclim-20140809.207 eshell: history
python-mode.el-6.1.3
wurde manuell installiert, währendemacs-eclim-20140809.207
wurde von installiertelpa
, und ich bin nicht 100% sicher, dass die anderen Dinge unter vonelpa/
warenelpa
. Wie kann ich den Inhalt von organisieren~/.emacs.d/
?
28
.emacs
und.wl
nicht lang genug.Eine klassische Methode hierfür ist das Aufteilen Ihrer
.emacs
Dateien in separate Dateien. Zum Beispiel könnten Sie all Ihre Web-Sachen in~/.emacs.d/web-config.el
und laden Sie es dann ininit.el
:Wenn Sie
~/.emacs.d
etwas besser organisiert sein möchten , können Sie diese Konfigurationsdateien auch in ein eigenes Verzeichnis verschieben:Jetzt können Sie einfach zur entsprechenden Datei springen, wenn Sie Änderungen an Ihrer Konfiguration vornehmen.
Eine Sache, die darin fehlt, sind Variablen, die über das Anpassungssystem festgelegt werden. Diese befinden sich weiterhin alle in Ihrer Hauptinitialisierung. Anscheinend gibt es ein kleines Hilfsprogramm namens init split, mit dem Sie Regeln festlegen können, welche Anpassungseinstellungen wohin gehen, aber ich habe es selbst nie verwendet. Alternativ kann das System "Anpassen" so konfiguriert werden, dass eine separate Datei zum Ändern Ihrer Einstellungen verwendet wird. Stellen Sie die
custom-file
Variable so ein, dass angegeben wird, woher die Einstellungen zum Anpassen gelesen und in diese geschrieben werden sollen .Was das Verzeichnis selbst angeht, war ich immer mit dem Standardlayout zufrieden. Die wichtigste Änderung, die ich vorgenommen habe, war das Erstellen eines Verzeichnisses für alle meine eigenen benutzerdefinierten Pakete und Bibliotheken, die nicht von verwaltet werden
package.el
. Dies gibt meinem benutzerdefinierten elisp ein Zuhause, das nichts mit der Konfiguration zu tun hat.quelle
elpa
verwaltetelpa
? Kann ich sie woanders hinbringen?custom-file
Variablen angeben, indem Sie die Variable festlegen . SourceWenn Sie den Org-Modus mögen, können Sie ihn verwenden, um Ihren zu organisieren,
.emacs
ohne ihn zu teilen. In meiner aktuellen Konfiguration.emacs
bootet meine Datei einfach eine init.org-Datei, unter der ich mich befinde~/.emacs.d/init/init.org
Durch die Verwendung unterschiedlicher Dateien müssen Sie
grep
nicht einfachC-s
nach etwas suchen, und so weiter. Außerdem ist es einfacher, Ihrer Organisation mehrere Ebenen hinzuzufügen.quelle
org-babel-load-file
. Süss! (Beispiele: github.com/vermiculus/dotfiles/blob/… , github.com/larstvei/dot-emacs )Verschieben Sie einfach Code-Teile von
init.el
in separate Dateien (Bibliotheken), die Sie dannrequire
. (Verwenden Sieprovide
in den Bibliotheken, umrequire
d.) Platzieren Sie diese Dateien, wo immer Sie möchten, und aktualisieren Sie sieload-path
entsprechend.quelle
~/.emacs.d/
? Sie bieten keine Spezifikation dessen an, was Sie wollen. Sie sind nicht darauf beschränkt, alles in einem Verzeichnis zu haben. Sie können Sachen an einer beliebigen Stelle ablegen und entsprechend modifizierenload-path
. Wenn einige Programme / Tools nur ablegen Zeug rein~/.emacs.d/
(dh, wenn Sie nicht sagen können, wo es abgelegt werden soll), dann verschieben Sie es, wo Sie es wollen, nachdem das Programm / Tool fertig ist.(require 'foobar)
ist ein Beispiel für die Verwendung vonrequire
.(add-to-list 'load-path "/my/lisp/dir")
ist ein Beispiel für das Ändernload-path
.(provide 'foobar)
ist ein Beispiel für die Verwendung vonprovide
.init.el
Bibliotheken laden, die sich an einem beliebigen Ort befinden , nicht nur innerhalb~/.emacs.d/
.Ich verwende den Vorschlag von targzeta aus dem Emacs Wiki: Load-Verzeichnis .
Grundsätzlich habe ich ein ~ / .emacs.d / load-directory.el:
Dann lege ich einfach separate Dateien in meine ~ / .emacs.d / config:
Und zum Schluss habe ich das in meinem ~ / .emacs.d / init.el:
quelle
Es gibt offensichtlich mehr als eine Möglichkeit, diese bestimmte Katze zu häuten. Mein aktueller Favorit ist die Verwendung
outline-minor-mode
mit Outshine . Auszug:Beachten Sie, dass Sie Outshine von Ihrem bevorzugten Paket-Repository erhalten müssen.
quelle
Ich verwende die folgende Struktur, um Pakete und Dateien im Auge zu behalten
Ich verwalte dann
use-package
, welche Pakete geladen und welche Anpassungen für jedes Paket festgelegt werden. Meistens nurhack
undelpa
müssen aktualisiert werden, die anderen Ordner sind oft für einmalige Pakete, die ich testen oder kurz verwenden möchte, aber nicht laden muss (auch nicht im Leerlauf).custom.el
dient zum Anpassen von Einstellungen, die ich lieber nicht verwende (und auch dann nicht versioniere, wenn ich sie verwende).defaults.el
dient der allgemeinen Konfiguration (Menüleiste, Schriftart, Codierung usw.), die dann in einer beliebigen .el-Datei in überschrieben werden kannuser-config/
, um ein System zu ermöglichen, das wie erwartet funktioniert, das jedoch an die Umgebung angepasst werden kann.Ich hatte vorher versucht zu halten
functions
,macros
,advice
in separaten Paketen für Abgrenzung zwischen Inhalt zu ermöglichen, sondern läuft in Definition / erfordern Fragen so jene wieder in gesetzt habeninit.el
. Sie können schließlich wieder eingesetzt werden~/.emacs.d/lisp/
.Ich versuche
init.el
aufgeräumt zu bleiben , die Inhalte nach Funktion und Zweck zu sortieren, damit es einfach ist, sie wieder zu finden. Ich hatte die monolithischeinit.el
Datei und fügte am Ende immer wieder neuen Inhalt hinzu (oder wo ich dachte, dass er passen könnte) und wusste dann nicht, was ich hinzugefügt hatte oder wo ich ihn hinzugefügt hatte, als ich danach suchte (und manchmal hat die Suche mitisearch
nicht geholfen, da ich mich nicht erinnern konnte, wie ich die Dinge damals benannt hatte).quelle
Alle vorhandenen Antworten enthalten bewährte Methoden für die Organisation manuell erstellten Dateien wie
init.el
und Freunden. Ebenso wichtig ist die Organisation aller automatisch erstellten Dateien aus verschiedenen Paketen, und dafür ist das Paketno-littering
ausgezeichnet.quelle
Ich fügte hinzu
zu emacs-lisp-mode-hook. Fügen Sie dann zu den Dateibereichen "yasnippet", "packaging", "java mode" usw. hinzu. Dies funktioniert gut für meine 1000 Codezeilen (einschließlich Kommentare).
EDIT: Zum Schluss wechsle ich mit helm-imenu zwischen den Sektionen. Eigentlich hakt sich der Helm automatisch in die normale Menüfunktion ein, also ist alles was ich brauche
quelle
Ich habe meine relativ kleine
.emacs
Datei in drei Teile geteilt:emacs-custom.el für Anpassungen, die viele sperrige und nutzlose Daten auslesen ; Die Datei wird automatisch neu geschrieben, ohne die .emacs-Hauptdatei zu berühren , wodurch falsche Änderungen vermieden werden.
lg-lib.el für Code statt Konfiguration: Laden meiner eigenen Bibliotheken von nicht standardmäßigen Quellspeicherorten anstatt aus dem Paketverzeichnis und Definieren verschiedener Funktionen (meistens kopiert und gehackt, wenn kein richtiges Paket vorhanden ist); Dies ist eine weitere erhebliche Reduzierung der .emacs- Zeilenanzahl.
Die Haupt- .emacs- Datei: Ohne umfangreichen Code und umfangreiche Anpassungsvariablen enthält sie
require
Aufrufe für Pakete, Variablen, die nicht Teil des Customize-Systems sind, und verschiedene Funktionsaufrufe zum Laden und Initialisieren von Paketen. Ich "organisiere" es, indem ich alle Zeilen, die sich auf dasselbe Paket oder dieselbe Funktion beziehen, sorgfältig zusammenführe und das Laden von Paketen und paketbezogene Einstellungen von der "Kern" -Funktionalität trenne. Ein ziemlich repräsentativer Auszug:Diese Abschnitte sind winzig, aber mit viel mehr Konfigurationszeilen für jedes Paket würden sie überschaubar bleiben.
quelle
Folgen Sie dem Setup eines Emacs-Masters, z. https://github.com/purcell/emacs.d
In Bezug auf die Organisation von manuell installierten Paketen und von ELPA installierten Paketen hat Steven Purcell beispielsweise folgende Einstellungen vorgenommen
Warum einem Meister folgen? Ein wichtiger Punkt meiner "Master-Emacs in einem Jahr" ist, dass Neulinge auf diese Weise Setup-Overhead und "Fallstricke" effizient vermeiden können.
Ich verstehe, dass viele Leute mir nicht zustimmen, aber hier ist mein Fall (ausführlich in meinem Artikel ):
Ich habe mit Emacs angefangen, indem ich Purcells angesehene ( 1403 GitHub-Sterne ab November 2014!), Stabile (5 Jahre in der Entwicklung) Konfiguration verwendet habe. Trotzdem hatte ich noch viele Probleme . Steve Purcell hat mir geholfen, all diese Probleme zu lösen. ( Tatsächlich wurde ich über ein Jahr lang sein Padawan .) Indem ich sein Setup und die Probleme seines Repos benutzte, um Probleme zu melden, und seine Erfahrung nutzte, vermied ich es, viel Zeit zu verschwenden. Selbst heute beobachte ich immer noch viele Leute
git submodule
, die Plugins von Drittanbietern verwalten. Sowohl Steve als auch ich haben es aufgegeben,git submodule
dies zu tun, weil es so eine PITA sein kann .Aber wenn Sie sich Ihrer Fähigkeiten sehr sicher sind oder viel lieber selbst lernen, ist dies nicht der richtige Weg für Sie.
quelle
[email protected]
, undwww.emacswiki.org
, und[email protected]
, und sogardebbugs.gnu.org
. Das heißt, es ist nichts Falsches daran, seine Init-Datei zu teilen, um anderen als Denkanstoß zu dienen. Der Rat ist für Neulinge, nicht so anzufangen; Der Rat ist nicht für Menschen, ihre eigenen Startup-Ansätze und Tipps nicht zu teilen.Eine innovative und einfache Möglichkeit, Ihren
.emacs.d
Ordner zu bereinigen, besteht darin,org-mode
alles mithilfe von Quellblöcken zu verwenden und darzustellen . Zeigen Sie dann in Ihrer.emacs
Datei aufconfig.org
.Eine wunderbare Ressource dafür ist Harry Schwartz. Er hat ein YouTube-Video , das berührt, und einen Blog-Beitrag, der die Details erklärt . Ich konnte es als Emacs Noob verfolgen und alles einrichten. Klappt wunderbar. 1 Datei für mein gesamtes
init
.quelle