Ändern des Standardordners in Emacs

106

Ich bin ziemlich neu in Emacs und habe versucht herauszufinden, wie der Standardordner C-x C-fbeim Start geändert werden kann. Zum Beispiel, wenn ich Emacs zum ersten Mal lade und C-x C-fden Standardordner drücke, ist C:\emacs\emacs-21.3\bines mir lieber, wenn es der Desktop ist. Ich glaube, es gibt eine Möglichkeit, das anzupassen.emacs Datei , aber ich bin mir immer noch nicht sicher, was das ist.

Update: Es gibt drei Lösungen für das Problem, bei dem ich festgestellt habe, dass sie funktionieren. Ich glaube jedoch, dass Lösung 3 nur Windows ist.

  • Lösung 1: (cd "C:/Users/Name/Desktop")Zur .emacsDatei hinzufügen

  • Lösung 2: (setq default-directory "C:/Documents and Settings/USER_NAME/Desktop/")Zur .emacsDatei hinzufügen

  • Lösung 3: Klicken Sie mit der rechten Maustaste auf die Verknüpfung Emacs, klicken Sie auf Eigenschaften und ändern Sie das Feld Start in das gewünschte Verzeichnis.

Anton
quelle

Antworten:

84

Sie haben es nicht gesagt, aber es hört sich so an, als würden Sie Emacs über eine Windows-Verknüpfung starten.

Das Verzeichnis, das Sie mit cx cf sehen, ist das cwd, in Emacs-Begriffen die default-directory(eine Variable).

Wenn Sie Emacs mit einer MS Windows-Verknüpfung starten, default-directoryist dies zunächst der Ordner (Verzeichnis), der im Feld "Start In" der Verknüpfungseigenschaften angegeben ist. Klicken Sie mit der rechten Maustaste auf die Verknüpfung, wählen Sie Propertiesden Pfad zu Ihrem Desktop aus und geben Sie ihn in das Start InFeld ein.

Wenn Sie Emacs über die Befehlszeile verwenden, default-directory als das Verzeichnis gestartet, in dem Sie Emacs gestartet haben (cwd).

Dieser Ansatz ist besser als das Bearbeiten Ihrer .emacs-Datei, da Sie mehr als eine Verknüpfung mit mehr als einem Startverzeichnis haben und bei Bedarf das normale Befehlszeilenverhalten von Emacs verwenden können.

CWD = aktuelles Arbeitsverzeichnis = PWD = aktuelles Arbeitsverzeichnis . In der Befehlszeile ist dies viel sinnvoller als in einer GUI.

Bart
quelle
Ja, ich verwende Emacs unter Windows.
Anton
5
Dies funktioniert auch unter MacOS. Ich habe dies zu meinen .emacs hinzugefügt: (setq default-directory (concat (getenv "HOME") "/"))
vy32
Und wenn Sie möchten, dass Emacs in Dired dieses Verzeichnisses startet Start In, fügen Sie es zusätzlich zum Einfügen in das Feld am Ende des TargetFeldes nach einem oder mehreren Leerzeichen hinzu und schließen Sie es in doppelte Anführungszeichen ( "). ZB : "d:\path\to\the\folder".
Drew
48

Ich denke, die Zeile, die Sie zu Ihren .emacs hinzufügen müssen, ist

(setq default-directory "C:/Documents and Settings/USER NAME/Desktop/" )

Emacs wird auf diese Weise auf Ihrem Desktop gestartet, es sei denn, Sie haben eine Datei geöffnet. Andernfalls wird es normalerweise im selben Verzeichnis wie die Datei in Ihrem aktuellen Puffer gestartet.

Michael
quelle
26

Sie können den Befehl 'cd' emacs eingeben. (Mx cd), um den Standardordner als einmalig zu ändern.

Chris Huang-Leaver
quelle
24

Ich habe gesetzt

(cd "c:/cvsroot/")

in meinen .emacs und es hat den Job gemacht

vava
quelle
6

Der Standardordner ist tatsächlich derselbe wie der aktuelle Arbeitsordner für den Puffer, dh er kann für jede Datei, mit der Sie arbeiten, unterschiedlich sein. Angenommen, die Datei, mit der Sie arbeiten, befindet sich in C:\dir_a, und das Arbeitsverzeichnis für diesen Puffer ist standardmäßig C:\dir_a. Sie können dies ändern M-x cdund stattdessen das Verzeichnis eingeben, das Sie als Standard verwenden möchten (und standardmäßig meine ich das Verzeichnis, das angezeigt wird, wenn Sie dies tunC-x C-f ).

Wenn Sie Emacs starten, ohne eine Datei zu öffnen, wird der *scratch*Puffer geöffnet. Wenn Sie Emacs über eine Windows-Verknüpfung gestartet haben, entspricht das Arbeitsverzeichnis dem in den Verknüpfungseigenschaften angegebenen. Wenn Sie es über die Befehlszeile gestartet haben, ist es das Verzeichnis, in dem Sie es gestartet haben. Sie können dieses Standardverzeichnis weiterhin mit ändern M-x cd, auch über das*scratch* Puffer .

Schließlich können Sie tun, was Vadim vorschlägt und setzt

(cd "c:/dir_a/")

in Ihrer .emacsDatei, um dieses Verzeichnis zum Standard zu machen, unabhängig davon, wie Sie Emacs starten.

ehdr
quelle
4

Unter Windows können Sie dies mit einer Verknüpfung tun.

Erstellen Sie eine Verknüpfung zu C:\emacs\emacs-21.3\bin\runemacs.exe. Bearbeiten Sie die Eigenschaften der Verknüpfung und ändern Sie den Wert von so Start In:, wie Sie es von Ihrem Standardverzeichnis erwarten.

Dave Webb
quelle
4

Ich verwende Emacs 22.2.1 unter Windows XP und wurde durch die obigen Antworten unterstützt, um die Antwort im Minibuffer zu erhalten, den ich auf den Befehl Cx Cf. Anfangs bekam ich "Datei suchen: C: \ Programme \ emacs \ bin /" wie Anton. Ich habe HOME auf "C: \ Dokumente und Einstellungen \ BENUTZERNAME \ Eigene Dateien" eingestellt. Die Antwort auf Cx Cf, die ich im Minibuffer haben möchte, lautet "Find file: ~ /". Durch Hinzufügen (setq Standardverzeichnis "C: / Dokumente und Einstellungen / BENUTZERNAME / Eigene Dateien") zu meiner .emacs-Datei konnte ich die Antwort "Datei suchen: C: \ Dokumente und Einstellungen \ BENUTZERNAME \ Eigene Dateien" erhalten / ", was funktional mit" Datei suchen: ~ / "identisch ist. Ich bemerkte jedoch einen weiteren Punkt. Mit "Emacs anpassen" unter "Optionen" konnte ich den Startbildschirm sperren. Wenn ich jetzt Emacs öffne, gehe ich sofort zum Scratch Buffer. Wenn ich Cx Cf in den Arbeitspuffer schreibe, erhalte ich genau die gewünschte Antwort.


quelle
+1 für die Erwähnung der Sperrung des Startbildschirms. Ich fand, dass dies der Schlüssel auf meinem Windows 10-System ist. Ich habe meine Antwort auf die verwandte Frage stackoverflow.com/a/38435697/823636
Rob_before_edits
1

Ich habe meiner Verknüpfung (in Gnome, Linux) einen Pramater hinzugefügt, der ein leerer Dummy-Dateiname ist, und ich gebe das Verzeichnis an. Da mein Emac standardmäßig "zu Hause" ist, sage ich einfach:

/ Desktop / blank_file

und das öffnet eine Datei namens "blank_file"

Dadurch wird auch das aktuelle Arbeitsverzeichnis für diese Emacs-Sitzung auf den Desktop verschoben.

Wenn ich etwas in "blank_file" lege, dann speichere ich es natürlich, ich habe das Zeug gespeichert. Was je nach Bedarf ärgerlich oder gut sein könnte!

Greg Laden
quelle
1

Um das Standardverzeichnis in Dired und Shell in DESKTOP zu ändern, fügen Sie dies in Ihre ~ / .emacs ein:

;; Dies funktioniert unter Windows XP.
(setq default-directory (concat "C: \ Dokumente und Einstellungen \ MY_ACCOUNT \ DESKTOP \"))

Adam Faryna
quelle
0

In Windows 8 funktioniert es, eine Verknüpfung auf dem Desktop zu erstellen und die Eigenschaft 'Start In:' für die Verknüpfung zu ändern.

Jetzt habe ich das Programm emacs-23.3 \ bin \ addpm.exe wie empfohlen ausgeführt, und auf dem Windows-8-Bildschirm (diese schreckliche Erfindung von Microsoft) erschien ein Symbol-Link zu Emacs. Dort müssen Sie jedoch die Eigenschaft 'Start In' erneut ändern. (Es unterscheidet sich von dem auf dem Desktop). Klicken Sie einfach mit der rechten Maustaste, wählen Sie in der unteren Leiste "Dateispeicherort öffnen" (oder ähnlich, ich habe es in meiner Sprache gemacht), und Sie werden zu dem Ordner mit einer neuen Verknüpfung weitergeleitet, in der Sie auch den ändern können (müssen) Eigenschaft 'Start In:'.

Ein wenig involviert, aber in der Tat sehr einfach.

Tonibat
quelle
0

Da es am ärgerlichsten ist, wenn Windows Emacs Sie in system32 ausgibt, wenn Sie nur die Verknüpfung verwenden, aber möchten, dass jeder andere Fall funktioniert, verwenden Sie einfach ein bisschen Elisp ...

(when (Zeichenfolge <"C: \ WINDOWS \ system32" Standardverzeichnis) (setq Standardverzeichnis "~ /"))

Daher wird standardmäßig nur Ihr Ausgangsverzeichnis verwendet, wenn Sie im System landen. Der einzige Nachteil ist, wenn Sie Emacs wirklich in system32 starten möchten ...

Grant BlahaErath
quelle