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.


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.


15

M-x cd

Dies sollte Ihr Problem lösen.


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").


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.