pro*_*eek 91 emacs clipboard elisp aquamacs
我需要获取我正在使用emacs编辑的文件的完整路径.
我正在使用Mac OS X和Aqumacs.
(setq filepath (get-fullpath-current-file)) ???
(copy-to-clipboard 'filepath) ???
Run Code Online (Sandbox Code Playgroud)
(defun show-file-name () "Show the full path file name in the minibuffer." (interactive) (message (buffer-file-name)) (kill-new (file-truename buffer-file-name)) ) (global-set-key "\C-cz" 'show-file-name)
结合我得到的两个答案,我可以得到我想要的.谢谢你的回答.还有一些问题.
Jér*_*dix 82
它是内置函数buffer-file-name
,为您提供文件的完整路径.
最好的办法是让你的emacs窗口始终显示你的系统名称和你当前正在编辑的缓冲区的完整路径:
(setq frame-title-format
(list (format "%s %%S: %%j " (system-name))
'(buffer-file-name "%f" (dired-directory dired-directory "%b"))))
Run Code Online (Sandbox Code Playgroud)
你也可以这样做:
(defun show-file-name ()
"Show the full path file name in the minibuffer."
(interactive)
(message (buffer-file-name)))
(global-set-key [C-f1] 'show-file-name) ; Or any other key you want
Run Code Online (Sandbox Code Playgroud)
asm*_*rer 66
借用JérômeRadix的答案,如果你只想快速查看当前缓冲区的文件路径,你可以这样做M-: buffer-file-name
.
Jul*_*ard 37
我的诀窍就是C-x C-f
打开一个文件,它会用当前文件路径预填充迷你文件,然后C-g
退出.M-: buffer-file-name
比任何其他方法都要快,但远远不够.
Tre*_*son 15
直接实现您想要的是:
(defun copy-full-path-to-kill-ring ()
"copy buffer's full path to kill ring"
(interactive)
(when buffer-file-name
(kill-new (file-truename buffer-file-name))))
Run Code Online (Sandbox Code Playgroud)
也就是说,我发现能够获得迷你缓冲区中的完整路径非常有用,这就是我使用的:
(define-key minibuffer-local-completion-map "\C-r" 'resolve-sym-link)
(defun resolve-sym-link ()
"Try to resolve symbolic links into true paths."
(interactive)
(beginning-of-line)
(let* ((file (buffer-substring (point)
(save-excursion (end-of-line) (point))))
(file-dir (file-name-directory file))
(file-true-dir (file-truename file-dir))
(file-name (file-name-nondirectory file)))
(delete-region (point) (save-excursion (end-of-line) (point)))
(insert (concat file-true-dir file-name))))
Run Code Online (Sandbox Code Playgroud)
然后,如果我想要它在剪贴板中,我只是杀死线(C-a C-k).但是我们可以在上面的命令中轻松地将truename复制到剪贴板,只需将最后一行更改为:
(insert (kill-new (concat file-true-dir file-name)))))
Run Code Online (Sandbox Code Playgroud)
新部分是'kill-new
将字符串放入kill ring 的调用.