sco*_*zer 25
我用这个:
(defun my-put-file-name-on-clipboard ()
"Put the current file name on the clipboard"
(interactive)
(let ((filename (if (equal major-mode 'dired-mode)
default-directory
(buffer-file-name))))
(when filename
(with-temp-buffer
(insert filename)
(clipboard-kill-region (point-min) (point-max)))
(message filename))))
Run Code Online (Sandbox Code Playgroud)
Boz*_*sov 24
在Emacs Prelude中我使用:
(defun prelude-copy-file-name-to-clipboard ()
"Copy the current buffer file name to the clipboard."
(interactive)
(let ((filename (if (equal major-mode 'dired-mode)
default-directory
(buffer-file-name))))
(when filename
(kill-new filename)
(message "Copied buffer file name '%s' to the clipboard." filename))))
Run Code Online (Sandbox Code Playgroud)
小智 19
如果要编写当前缓冲区的名称/路径,可以键入C-u M-:,然后输入(buffer-file-name)- 完整路径 - 或(buffer-name)缓冲区名称.
那是:
M-: + ellisp expression 评估迷你缓冲区中的ellisp表达式
C-u 将输出写入当前缓冲区
如果有人偶尔使用这个或其他函数,并且不喜欢在每次启动时都不初始化函数,那么这个问题并不能完全回答问题.
Dag*_*ahl 12
在Spacemacs发行版中,您可以按下Spacefy以在迷你缓冲区中显示缓冲区名称并将其复制到kill ring.
该函数spacemacs/show-and-copy-buffer-filename似乎源于此博客文章:Emacs:显示缓冲区文件名.
(defun camdez/show-buffer-file-name ()
"Show the full path to the current file in the minibuffer."
(interactive)
(let ((file-name (buffer-file-name)))
(if file-name
(progn
(message file-name)
(kill-new file-name))
(error "Buffer not visiting a file"))))
Run Code Online (Sandbox Code Playgroud)
为什么没人告诉这个简单的解决方案。
只需转至干燥的缓冲区,然后按0 w或即可C-u 0 w。
这将调用dired-copy-filename-as-kill,为您提供文件的完整路径。如果需要当前目录,只需删除文件末尾,或者可以使用下面的功能,然后将其绑定到所需的任何键。
(defun my/dired-copy-dirname-as-kill ()
"Copy the current directory into the kill ring."
(interactive)
(kill-new default-directory))
Run Code Online (Sandbox Code Playgroud)
PS:我个人使用Dired-Jump从文件缓冲区转到当前目录
有一个缓冲区扩展 - 它有copy-buffer-file-name-as-kill功能.它甚至会询问您要复制的内容:名称,全名或目录名称.
编辑:
我用修改后的版本copy-buffer-file-name-as-kill来自buffer-extension.el:
(defun copy-buffer-file-name-as-kill (choice)
"Copyies the buffer {name/mode}, file {name/full path/directory} to the kill-ring."
(interactive "cCopy (b) buffer name, (m) buffer major mode, (f) full buffer-file path, (d) buffer-file directory, (n) buffer-file basename")
(let ((new-kill-string)
(name (if (eq major-mode 'dired-mode)
(dired-get-filename)
(or (buffer-file-name) ""))))
(cond ((eq choice ?f)
(setq new-kill-string name))
((eq choice ?d)
(setq new-kill-string (file-name-directory name)))
((eq choice ?n)
(setq new-kill-string (file-name-nondirectory name)))
((eq choice ?b)
(setq new-kill-string (buffer-name)))
((eq choice ?m)
(setq new-kill-string (format "%s" major-mode)))
(t (message "Quit")))
(when new-kill-string
(message "%s copied" new-kill-string)
(kill-new new-kill-string))))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8853 次 |
| 最近记录: |