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

问题描述 投票:0回答:3

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

emacs elisp
3个回答
52
投票

有时,当前缓冲区的

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


31
投票

您可以使用

default-directory
变量。

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

注意

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


0
投票

可以使用命令

M-x pwd
查看当前缓冲区中
default-directory
的值。

每个缓冲区都有一个默认目录,存储在缓冲区局部变量

default-directory
中。每当 Emacs 使用迷你缓冲区读取文件名时,它通常会将默认目录插入到迷你缓冲区中作为初始内容。当你访问一个文件时,Emacs 将访问缓冲区中的
default-directory
设置为其文件的目录。

https://www.gnu.org/software/emacs/manual/html_node/emacs/File-Names.html

© www.soinside.com 2019 - 2024. All rights reserved.