Wie ändere ich das aktuelle Arbeitsverzeichnis?

11

Wie ändere ich das aktuelle Arbeitsverzeichnis von Emacs?

set default-directoryhat keinen Einfluss auf das aktuelle Arbeitsverzeichnis des Emacs-Prozesses, das über überprüft werden kann lsof -p pid.

FunkyBaby
quelle
1
Emacs, "eine Art Betriebssystem", hat nicht wirklich ein einziges aktuelles Arbeitsverzeichnis. Was Sie also als cwd des Prozesses ansehen, ist größtenteils zufällig und nicht wirklich dokumentiert. Wenn ich mir den C-Code von Emacs ansehe, habe ich den Eindruck, dass es derzeit keine Möglichkeit gibt, das zu tun, was Sie wollen. Sie können es daher M-x report-emacs-bugals neue Funktion anfordern.
Stefan
1
Angenommen, Sie arbeiten unter Linux, können Sie die Änderung des CWD erzwingen, indem Sie auf Betriebssystemebene arbeiten. Weitere Informationen finden Sie unter unix.stackexchange.com/questions/281994/… .
TTimo

Antworten:

4

Ich denke, die einzige Möglichkeit, die Emacs bietet, um cwdden Prozess zu steuern , ist das --chdirBefehlszeilenargument. Sobald der Prozess gestartet ist, gibt es derzeit keine Möglichkeit, ihn zu ändern.

Stefan
quelle
15

M-x cd

Dies sollte Ihr Problem lösen.

ksinkar
quelle
1
Laut den Dokumenten cdwird "DIR zum Standardverzeichnis des aktuellen Puffers machen". Ich würde annehmen, dass es sich um einen Wert pro Puffer handelt und nicht für andere vorhandene oder neu erstellte Puffer gilt.
Mojo
4

C-h f cd::

cdist eine interaktive kompilierte Lisp-Funktion in files.el.

(cd DIR)

Machen Sie DIRdas Standardverzeichnis des aktuellen Puffers.

Wenn Ihre Umgebung eine CDPATHVariable enthält, versuchen Sie jedes dieser Verzeichnisse (getrennt durch Vorkommen von path-separator), wenn Sie einen relativen Verzeichnisnamen auflösen. Das Pfadtrennzeichen ist in GNU- und GNU-ähnlichen Systemen Doppelpunkt.

Und bitte erklären Sie, warum das Ändern default-directorynicht auch das "aktuelle Verzeichnis" für Sie ändert : (setq default-directory "/my/favorite/dir").

Drew
quelle
Ich meine den cwd des emacs-Prozesses, der ein Eintrag im Prozesssteuerungsblock ist und leicht über = lsof -p pid = überprüft werden kann. Das = default-directory = ist eine interne Sache für Emacs. Ich muss cwd ändern, weil tmux das cwd eines Vordergrundprozesses als Startverzeichnis eines neuen Fensters / Fensters verwendet.
FunkyBaby
Aha. Dann war (und ist) Ihre Frage für mich unklar. Was bedeutet es, das aktuelle Arbeitsverzeichnis des Emacs-Prozesses zu ändern? Sie möchten es ändern, nachdem der Prozess existiert? Mehr als einmal?
Drew
es ändert buchstäblich das = cwd = von Emacs. "Mehr als einmal"? Was meinst du damit. = cwd = ist nicht als feste Sache konzipiert. In c, Mann 2 chdir. In Python os.chdir. Ich möchte wissen, wie man das in elisp macht (für Emacs).
FunkyBaby
Siehe @ Stefans Antwort.
Drew