如何更改当前工作目录?


11

如何更改emacs当前的工作目录?

设置default-directory不会影响emacs进程的当前工作目录,可以通过进行验证lsof -p pid


1
Emacs是“一种操作系统”,实际上并没有单个工作目录。因此,您看到的该过程的cwd很大程度上是偶然的,没有真正记录在案。通过查看Emacs的C代码,我得到的印象是,目前尚无任何方法可以执行所需的操作。因此M-x report-emacs-bug,您可能会要求它作为一项新功能。
Stefan's

1
假设您使用的是Linux,则可以通过在OS级别上进行操作来强制更改cwd,有关详细信息,请参见unix.stackexchange.com/questions/281994/…
TTimo '18

Answers:


4

我认为Emacs提供的唯一控制cwd过程的方法是--chdir命令行参数。一旦启动该过程,当前将无法对其进行修改。


15

M-x cd

这应该可以解决您的问题。


1
根据文档,cd将“使DIR成为当前缓冲区的默认目录”。我认为这是每个缓冲区的值,不适用于其他现有缓冲区或新创建的缓冲区。
mojo

@mojo也许,但是如果您在关闭所有其他缓冲区时使用默认缓冲区来执行此操作,那么无论如何都将剩下。所以它仍然很实用
Keldon Alleyne

5

C-h f cd

cd是Windows中的交互式已编译Lisp函数files.el

(cd DIR)

使DIR成为当前缓冲区的默认目录。

如果您的环境包含一个CDPATH变量,请path-separator在解析相对目录名称时尝试使用该目录列表中的每一个(以出现的分隔 )。在GNU和类似GNU的系统中,路径分隔符是冒号。

并且请说明为什么更改default-directory不会同时为您更改“当前目录”:(setq default-directory "/my/favorite/dir")


我的意思是emacs进程的cwd,它是进程控制块中的一项,可以通过= lsof -p pid =轻松检查。= default-directory =是emacs的内部内容。为什么我需要更改cwd是因为tmux使用前台进程的cwd作为新窗口/窗格的开始目录。
FunkyBaby

我知道了。然后,您的问题(对我来说仍然是)仍然不清楚。更改Emacs进程的当前工作目录是什么意思?您要在进程存在后进行更改吗?不止一次?
提请

它实际上是在改变emacs的= cwd =。“不止一次”?你是什​​么意思。= cwd =并非固定不变。在c中,男人2 chdir。在python中,os.chdir。我想知道如何在elisp(对于emacs)中执行此操作。
FunkyBaby

请参阅@Stefan的答案。
Drew
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.