emacs的 - 当前缓冲区列表保存到文本文件(emacs - save current buffe

2019-07-29 08:51发布

很多时候我需要让我的当前打开的文件的简单的文本副本。 其原因通常是:

  • 我想将列表发送给同事
  • 我想记录什么我的工作(通常在组织文件)
  • 我想采取行动的我当前打开的文件中的一个,在外壳上。 我需要复制粘贴的路径。

事实是,通常的buffer-menulist-buffers提供了方便的菜单导航打开的缓冲器,但非常不方便粘贴复制到终端打开的文件的名称,或执行任何提及的行动以上。 例如:我不能在一条线上双击选择的全路径名,我不能使用kill / yank emacs的序列周围的路径名复制。

总结:我想一个方法来导出到文本文件(或到一个新的缓冲区)打开的文件列表,没有其他数据; 没有文件大小,模式,或任何其它的emacs元数据。

是否有一个命令? 一个额外的软件包我可以安装?

编辑

由杰克逊的三分球解决方案添加,修改,以提供哪些已经做了一些反馈意见:

(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"))

Answer 1:

这个命令会为你做的工作:

(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")))


Answer 2:

你可以改变你的模式*Buffer List*缓冲区。 默认情况下,它会在模式Buffer Menu ,但将其更改为text-modefundamental-mode将删除所有的特殊行为让您剪切和粘贴就像一个普通的缓冲区。 元数据可以很容易地与砍掉delete-rectangle

或者,你可以用elisp的编程方式访问缓冲区列表:

(dolist (buffer (buffer-list))
  (when (buffer-file-name buffer)
    (insert (buffer-file-name buffer) "\n")))


Answer 3:

你当然应该能够复制和缓冲区列表猛拉。

例如,复制与CX ^ h 的Mw一切,然后猛拉到编辑一个新的缓冲区。



文章来源: emacs - save current buffer list to a text file