Jak zmienić bieżący katalog roboczy?

11

jak zmienić aktualny katalog roboczy emacsa?

zestaw default-directorynie wpływa na bieżący katalog roboczy procesu emacsa, który można zweryfikować za pomocą lsof -p pid.

FunkyBaby
źródło
1
Emacs, będąc „rodzajem systemu operacyjnego”, tak naprawdę nie ma ani jednego bieżącego katalogu roboczego. To, co widzisz jako cwd procesu, jest w dużej mierze przypadkowe i nie jest tak naprawdę udokumentowane. Patrząc na kod C Emacsa, mam wrażenie, że obecnie nie ma możliwości robienia tego, co chcesz. Możesz więc M-x report-emacs-bugpoprosić o nową funkcję.
Stefan
1
Zakładając, że używasz Linuksa, możesz zmusić cwd do zmiany, pracując na poziomie systemu operacyjnego, zobacz unix.stackexchange.com/questions/281994/... w celu uzyskania szczegółowych informacji.
TTimo,

Odpowiedzi:

4

Myślę, że jedynym sposobem, w jaki Emacs oferuje kontrolę cwdnad procesem, jest --chdirargument wiersza poleceń. Po uruchomieniu procesu nie ma obecnie możliwości jego modyfikacji.

Stefan
źródło
15

M-x cd

To powinno rozwiązać twój problem.

ksinkar
źródło
1
Zgodnie z dokumentami cd„sprawi, że DIR stanie się domyślnym katalogiem bieżącego bufora”. Zakładam, że jest to wartość na bufor i nie będzie mieć zastosowania do innych istniejących buforów lub do nowo utworzonych.
mojo
@mojo może, ale jeśli zrobisz to z domyślnym buforem, gdy wszystkie inne bufory są zamknięte, to i tak pozostaniesz. To wciąż jest całkiem praktyczne
Keldon Alleyne
5

C-h f cd:

cdto interaktywna skompilowana funkcja Lisp w files.el.

(cd DIR)

Niech DIRstanie się domyślnym katalogiem bieżącego bufora.

Jeśli środowisko zawiera CDPATHzmienną, wypróbuj każdą z tej listy katalogów (oddzielonych wystąpieniami path-separator) podczas rozwiązywania względnej nazwy katalogu. Separator ścieżek to dwukropek w systemach GNU i podobnych do GNU.

I proszę wyjaśnić dlaczego zmienia default-directorynie również zmienić „aktualny katalog” dla Ciebie: (setq default-directory "/my/favorite/dir").

Rysował
źródło
Mam na myśli cwd procesu emacsa, który jest wpisem w bloku sterowania procesem i można go łatwo sprawdzić za pomocą = lsof -p pid =. = Default-directory = jest wewnętrzną sprawą do emacsa. Dlaczego muszę zmienić cwd, ponieważ tmux używa cwd procesu pierwszoplanowego jako katalogu startowego nowego okna / panelu.
FunkyBaby,
Widzę. Twoje pytanie było (i nadal jest dla mnie) niejasne. Co to znaczy zmienić bieżący katalog roboczy procesu Emacsa? Chcesz to zmienić po zakończeniu procesu? Więcej niż raz?
Drew
dosłownie zmienia = cwd = emacsa. "Więcej niż raz"? co przez to rozumiesz. = cwd = nie zostało zaprojektowane jako coś naprawionego. W c, człowiek 2 chdir. W python os.chdir. Chcę wiedzieć, jak to zrobić w elisp (dla emacsa).
FunkyBaby,
Zobacz odpowiedź @ Stefana.
Drew