Emacs,如何获取当前缓冲区的目录?

Emacs, how to get directory of current buffer?

在 emacs 中有 buffer-file-name 给出文件的完整路径。但是有没有办法只获取当前缓冲区中加载的文件的目录?

您可以使用 default-directory 变量。

Documentation: Name of default directory of current buffer. Should end with slash. To interactively change the default directory, use command `cd'.

注意expand-file-name会默认使用default-directory,所以有时候 你甚至不需要提及它。

有时 default-directory 当前缓冲区可能被设置为缓冲区当前访问的文件的当前目录以外的其他内容,在这种情况下,上面的解决方案不会给出提问者正在寻找的内容.

在这种情况下,你可以使用file-name-directory方法,像这样:(file-name-directory buffer-file-name)

这是文档的 link:

http://www.gnu.org/software/emacs/manual/html_node/elisp/File-Name-Components.html