Emacs 如何获取绝对文件名的非目录部分?

Emacs 如何获取绝对文件名的非目录部分?,emacs,filenames,Emacs,Filenames,我想问一下如何从lisp中的interactive命令中获取文件名 顺便说一句,这是从另一个stackoverflow线程获取的 我的问题是,文件使用的是绝对路径,而不仅仅是文件名,这导致文件在推送到服务器时出错 而不仅仅是yahoocom.png, 我明白了 /用户/test/test/test/test/yahoocom.png 我只想 yahoocom.png 我是否可以修改代码,使其只使用文件名。我想您要找的是: 返回文件名FILENAME sans及其目录。 例如,在Unix语法文件名

我想问一下如何从lisp中的interactive命令中获取文件名

顺便说一句,这是从另一个stackoverflow线程获取的

我的问题是,文件使用的是绝对路径,而不仅仅是文件名,这导致文件在推送到服务器时出错

而不仅仅是yahoocom.png, 我明白了

/用户/test/test/test/test/yahoocom.png

我只想

yahoocom.png


我是否可以修改代码,使其只使用文件名。

我想您要找的是:

返回文件名FILENAME sans及其目录。 例如,在Unix语法文件名中, 这是上次刀砍之后的一切, 如果不包含斜杠,则为全名

请注意,您可能不希望使用原始绝对路径或


另外,我建议您在表单中用fImage file name:替换G,因为如果文件不存在,您的函数将失败。

我想您需要的是:

返回文件名FILENAME sans及其目录。 例如,在Unix语法文件名中, 这是上次刀砍之后的一切, 如果不包含斜杠,则为全名

请注意,您可能不希望使用原始绝对路径或


另外,我建议您在表单中用fImage file name:替换G,因为如果文件不存在,您的函数将失败。

虽然sds的答案确实给出了您直接要求的结果,我认为您真正需要的可能是文件的相对名称,如果该文件位于当前工作目录中,则该文件的相对名称将完全相同。如果是,请尝试文件相对名称:

将文件名转换为相对于目录默认:默认目录。 此函数返回与文件名等效的相对文件名 将该默认目录用作默认目录时。 如果文件名是一个相对文件名,它将被解释为存在于 默认目录。 如果文件名和目录位于不同的计算机或不同的驱动器上 在DOS/Windows计算机上,它以扩展形式返回文件名


虽然sds的回答确实给出了您直接要求的内容,但我认为您真正需要的可能是文件的相对名称,如果文件位于当前工作目录中,则该名称将完全相同。如果是,请尝试文件相对名称:

将文件名转换为相对于目录默认:默认目录。 此函数返回与文件名等效的相对文件名 将该默认目录用作默认目录时。 如果文件名是一个相对文件名,它将被解释为存在于 默认目录。 如果文件名和目录位于不同的计算机或不同的驱动器上 在DOS/Windows计算机上,它以扩展形式返回文件名


这完美地解决了它。非常感谢。我已经用F替换了,它是原始堆栈交换帖子中的一个。我只是尝试了不同的参数。谢谢你,这完全解决了问题。非常感谢。我已经用F替换了,它是原始堆栈交换帖子中的一个。我只是尝试了不同的参数。非常感谢。
(defun markdown-insert-clipboard-image (&optional file)
  (interactive "G")
  (shell-command (concat "pngpaste " file))
  (insert (concat "![" file "](" file ")")))