2010-12-04 16 views
6

Ich habe verschiedene Arbeits-spezifische .emacs Konfigurationsdateien auf Servern, wo ich für verschiedene Firmen arbeite. Dies sind Pakete, die ich aus verschiedenen Gründen nicht lokal auf meinem Rechner speichern möchte. Gibt es eine Möglichkeit, Emacs mit einem dieser Remote-Verzeichnisse zu starten, als wäre es lokal?Ist es möglich, Emacs mit einer Remote-Konfigurationsdatei zu starten?

Tramp eignet sich hervorragend zum Bearbeiten von Remote-Dateien, als ob sie lokal wären - jetzt möchte ich in der Lage sein, einen ganzen Emacs-Editor auf die gleiche Weise zu starten.

+0

Auch verwandt: [laden .emacs von URL] (http://stackoverflow.com/questions/9988540/load-emacs-from-url/9988910) – phils

Antwort

3

bis Emacs starten eine jener entfernten Verzeichnissen, als ob es

lokale waren Wenn die Server Unix/Linux-Server sind und Sie ssh-Zugang haben, dann könnte man SSH Filesystem versuchen. Dann können Sie die Server auf lokale Verzeichnisse montieren, z.B .:

> sshfs server1: ~/remote/server1 
> sshfs server2: ~/remote/server2 

dann Sie Emacs mit emacs --no-init-file --load ~/remote/servers2/.emacs und so weiter beginnen konnte.

Pakete, die aus verschiedenen Gründen, ich will nicht lokal speichern

Wenn Pakete in .emacs.d auf den Remote-Rechnern installiert werden Sie Skripte wie folgt auf Ihrem lokalen schaffen könnte Maschine:

;; .emacs.server1.el 
(add-to-list 'load-path (expand-file-name "~/remote/server1/.emacs.d")) 
(add-to-list 'load-path (expand-file-name "~/remote/server1/.emacs.d/package1")) 
(load (expand-file-name "~/remote/server1/.emacs")) 

Und dann emacs wie folgt beginnen: emacs --no-init-file --load ~/.emacs.server1.el

Offensichtliche dieses Skript hängt von den Halterungen ab Ove.

+0

Sie können diesen Ansatz erweitern, indem Sie einfach sshfs verwenden, um das entsprechende bereitzustellen remote .emacs.d-Verzeichnis bei .emacs.d auf dem lokalen Rechner, z sshfs server1: .emacs.d ~/.emacs.d - dies vermeidet die Notwendigkeit, die oben erwähnten Argumente zu übergeben. Um lokale Init-Dateien zu verwenden, muss jedes sshfs-Dateisystem von ~/.emacs.d getrennt und in -s ~/.emacs.d.local ~/.emacs.d ausgeführt werden. Schließlich können Sie mit .emacs.d/init.el anstelle von ~/.emacs auch maschinenspezifische Init-Dateien erstellen. – jlf

5

Aus Neugier habe ich dies nur ein zu gehen:

emacs -q --load "/ssh:[email protected]:.emacs.d/init.el" 

Das funktionierte, aber die entfernte init.el setzt Lastpfade wie „~/.emacs.d/Verkäufer /“, so wirklich ein Init-Datei muss wissen, dass die Pfade und Dateinamen, die sie festlegen, relativ zu einer gemeinsamen Basis sein müssen. Diese Basis kann durch eine gemeinsame Variable eingestellt werden, so versuchen:

emacs -q --eval '(setq init-base "/ssh:[email protected]:") (load (concat init-base ".emacs.d/init.el"))' 

Dann in der Fernconfig, prepend init-base auf einen Pfad oder Dateiname setzt das Fern sein sollte.

Verwandte Themen