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

Emacs,如何获取当前缓冲区的目录?,emacs,elisp,Emacs,Elisp,在emacs中,缓冲区文件名提供了文件的完整路径。但是有没有办法只获取当前缓冲区中加载的文件的目录?您可以使用默认目录变量 文件: 当前缓冲区的默认目录的名称。应该以斜杠结尾。 要以交互方式更改默认目录,请使用命令“cd” 请注意,默认情况下,expand file name将使用默认目录,因此有时 你甚至不必提它 有时,当前缓冲区的默认目录可能被设置为缓冲区当前访问的文件的当前目录以外的其他目录,在这种情况下,上述解决方案不会给出询问者所寻找的内容 在这种情况下,您可以使用文件名目录方法,如:

在emacs中,缓冲区文件名提供了文件的完整路径。但是有没有办法只获取当前缓冲区中加载的文件的目录?

您可以使用
默认目录
变量

文件: 当前缓冲区的默认目录的名称。应该以斜杠结尾。 要以交互方式更改默认目录,请使用命令“cd”


请注意,默认情况下,
expand file name
将使用
默认目录
,因此有时
你甚至不必提它

有时,当前缓冲区的默认目录可能被设置为缓冲区当前访问的文件的当前目录以外的其他目录,在这种情况下,上述解决方案不会给出询问者所寻找的内容

在这种情况下,您可以使用
文件名目录
方法,如:
(文件名目录缓冲区文件名)

以下是指向文档的链接:


默认目录
变量?是的,abo abo的答案解决了标题中的问题,但如果您专门处理
缓冲区文件名
(尽管它产生影响的可能性很小)。
缓冲区文件名
是一个函数,因此这应该是
(file name directory(buffer file name))
。实际上,根据,
buffer file name
既是一个函数又是一个缓冲区局部变量,所以
(file name directory buffer file name)
(file name directory(buffer file name))
都应该可以工作。啊,我的错误。:)我现在很好奇,是否有任何理由选择其中一个而不是另一个。。。。