如何在GNU emacs中比较cd,cd-absolute和默认目录?

问题描述 投票:3回答:2

自定义Emacs时,我应该如何考虑elisp函数cdcd-absolute以及elisp变量default-directory?我的经验使我相信cd-absolute会更改emacs进程本身的目录(跨缓冲区的全局设置,其中default-directory未在本地设置),而cddefault-directory则位于缓冲区本地。但是,内置的帮助不足以使我理解,并且我看到的行为使我怀疑cd-absolute覆盖了我要访问的缓冲区中的default-directory

结束编辑

如果我在这里没有得到任何答复,我将不得不在help-gnu-emacs列表上进行我自己的研究,并且,作为最后的选择,我将不得不阅读源代码。

emacs elisp
2个回答
2
投票

我认为您误解了default-directory的工作方式。在default-directory中设置.emacs对大多数缓冲区无效。正在访问文件的缓冲区的本地值default-directory将自动设置为存储访问文件的目录。这将覆盖先前设置的default-directory的所有值。

如果通过cd(或cd-absolute)更改缓冲区的当前目录,则只会为该缓冲区设置default-directory。如果您随后打开一个新文件,则新缓冲区的default-directory将设置为新文件的目录。

如果您打开一个不访问文件的新缓冲区,那么此新缓冲区的default-directory值将与前一个缓冲区的值相同。这是cd的结果将应用于除调用其以外的缓冲区的唯一情况。

cd-absolute不可用于交互使用。据我所知,它是一个便利函数,其与cd的区别仅在于路径被视为absolute而不是relative路径。

鉴于所有这些,您想做什么?


-1
投票

如果要在Emacs启动后进入某个目录,请在init文件的末尾写类似如下的内容:

(dired "~/PATH/TO/DIRECTORY")
© www.soinside.com 2019 - 2024. All rights reserved.