在emacs中,有一个buffer-file-name函数可以获取文件的完整路径。但是有没有一种方法只获取当前缓冲区所加载文件的目录呢?
有时当前缓冲区的 default-directory
可能会被设置为与缓冲区当前正在访问的文件的当前目录不同的其他位置,此时上述解决方案将无法提供询问者所寻找的结果。
在这种情况下,您可以使用 file-name-directory
方法,如下所示:(file-name-directory buffer-file-name)
这里是文档链接:
http://www.gnu.org/software/emacs/manual/html_node/elisp/File-Name-Components.html
buffer-file-name
,我会推荐Sandy的回答(尽管它有所不同的机会)。 - philsbuffer-file-name
是一个函数,因此应该写成(file-name-directory (buffer-file-name))
。 - GManNickG(file-name-directory buffer-file-name)
和(file-name-directory (buffer-file-name))
两者都可以使用。 - Sandybuffer-file-name
可以是 nil
,例如在 *scratch*
缓冲区中。 - Andre Holzner您可以使用default-directory
变量。
文档: 当前缓冲区的默认目录名称,应以斜杠结尾。 要交互式更改默认目录,请使用命令“cd”。
请注意,默认情况下,expand-file-name
将使用default-directory
,因此有时您甚至不需要提及它。
default-directory
变量是什么? - abo-abo