在 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
您可以使用
default-directory
变量。
文档: 当前缓冲区的默认目录名称。应该以斜杠结尾。 要以交互方式更改默认目录,请使用命令“cd”。
注意
expand-file-name
默认会使用 default-directory
,所以有时
你甚至不需要提及它。
可以使用命令
M-x pwd
查看当前缓冲区中default-directory
的值。
每个缓冲区都有一个默认目录,存储在缓冲区局部变量
default-directory
中。每当 Emacs 使用迷你缓冲区读取文件名时,它通常会将默认目录插入到迷你缓冲区中作为初始内容。当你访问一个文件时,Emacs 将访问缓冲区中的 default-directory
设置为其文件的目录。
https://www.gnu.org/software/emacs/manual/html_node/emacs/File-Names.html