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

Håk*_*and 1 emacs

假设我在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)
Run Code Online (Sandbox Code Playgroud)

我在Ubuntu 12.04上使用GNU Emacs 23.3.1.

gio*_*ano 5

不幸的是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)))))
Run Code Online (Sandbox Code Playgroud)

双方file-name-sans-extensionfile-name-nondirectory应在Emacs 23可用.

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