如何在GNU emacs中比较cd,cd-absolute和default-directory?

时间:2013-10-18 16:49:59

标签: emacs elisp

在我自定义Emacs时,如何考虑elisp函数cdcd-absolute以及elisp变量default-directory?我的经验使我相信cd-absolute更改了emacs进程本身的目录(跨缓冲区的全局设置,其中default-directory未在本地设置),而cd和{{1} }是缓冲区的本地。尽管如此,内置的帮助还不足以让我对自己的理解感到满意,而且我看到的行为让我怀疑default-directory在我正在访问的缓冲区中覆盖cd-absolute

如果没有答案,我将在help-gnu-emacs列表上进行自己的研究,并且只作为最后的手段,阅读源代码。

2 个答案:

答案 0 :(得分:2)

我认为你误解了default-directory的工作原理。在default-directory中设置.emacs对大多数缓冲区都没有影响。正在访问文件的缓冲区的default-directory的本地值自动设置为存储访问文件的目录。这将覆盖任何先前设定的default-directory

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

如果打开一个未访问文件的新缓冲区,则此新缓冲区的default-directory值将与前一个缓冲区的值相同。这是唯一一种cd的结果将应用于缓冲区以外的缓冲区的情况。

cd-absolute不适合互动使用。据我所知,这是一个与cd不同的便利函数,只是路径被视为绝对,而不是相对路径。

鉴于这一切,你想做什么?

答案 1 :(得分:0)

如果你想在Emacs启动后进入某个目录,请在你的init文件的末尾写下:

(dired "~/PATH/TO/DIRECTORY")