1

假设我在 Emacst.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。

4

1 回答 1

8

不幸的是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)))))

两者file-name-sans-extension并且file-name-nondirectory应该在 Emacs 23 中可用。

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

于 2013-06-24T13:43:05.547 回答