我正在尝试从 buffer-file-name
变量中提取相对于主目录的当前目录。考虑:
(defun test ()
(interactive)
(let ((fn "/home/user/dir1/dir2/file.txt"))
(when (string-match "^.*?/user/" fn)
(let ((temp (replace-match "${HOME}/" nil nil fn)))
(when (string-match "/.*?$" temp)
(message (replace-match "/" nil nil temp)))))))
在这里我想得到${HOME}/dir1/dir2/
,但我得到的是${HOME}/
。我在这里缺少什么?
最佳答案
试试这个:
(let ((str "/home/user/dir1/dir2/file.txt"))
(when (string-match "^.*?/user/" str)
(file-name-directory (replace-match "${HOME}/" nil nil str))))
关于regex - Emacs lisp 正则表达式从缓冲区文件名中提取当前相对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22375046/