我经常需要获取当前打开文件的简单文本副本。原因通常是:
- 我想将列表发送给同事
- 我想记录我正在处理的任何事情(通常在组织文档中)
- 我想在 shell 上对我当前打开的文件之一进行操作。我需要为此复制粘贴路径名。
事实是,通常buffer-menu
或list-buffers
提供方便的菜单来导航打开的缓冲区,但将打开的文件的名称复制粘贴到终端或执行上述任何操作非常不方便。例如:我不能在一行中双击来选择完整的路径名,也不能使用kill
/ yank
emacs 序列来复制路径名。
摘要:我想要一种将打开文件列表导出到文本文件(或新缓冲区)的方法,而不需要其他数据;没有文件大小、模式或任何其他 emacs 元数据。
有这个命令吗?我可以安装一个额外的软件包吗?
编辑
由 Trey Jackson 添加解决方案,经过修改以提供对已完成操作的一些反馈:
(defun copy-open-files ()
"Add paths to all open files to kill ring"
(interactive)
(kill-new (mapconcat 'identity
(delq nil (mapcar 'buffer-file-name (buffer-list)))
"\n"))
(message "List of files copied to kill ring"))