如何确定Emacs缓冲文件名的基本名称?

4
假设我在Emacs中编辑我的主目录下的文件`t.txt`。然后,`ESC-:buffer-file-name`会生成`/Home/fcihh/t.txt`。如何从中提取文件名部分`t.txt`?
根据此链接,我认为应该能够编写`ESC-:(file-name-base buffer-file-name)`。但是这会产生错误。
Lisp error: (void-function file-name-base)

我正在使用Ubuntu 12.04上的GNU Emacs 23.3.1。
1个回答

11
很遗憾,file-name-base是在Emacs 24中引入的。以下是它的定义,来自lisp/files.el:
(defun file-name-base (&optional filename)
  "Return the base name of the FILENAME: no directory, no extension.
FILENAME defaults to `buffer-file-name'."
  (file-name-sans-extension
   (file-name-nondirectory (or filename (buffer-file-name)))))

在 Emacs 23 中,应该可以使用 file-name-sans-extensionfile-name-nondirectory

如果您只想要带扩展名的基本名称,则只需要使用 file-name-nondirectory


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接