在emacs中,使用neotree,我怎样才能将节点的完整路径指向kill ring?
问题描述:
假设我在emacs中使用neotree,并假设点位于表示文件或目录的节点上方。在emacs中,使用neotree,我怎样才能将节点的完整路径指向kill ring?
我该如何将所述节点的完整路径抽出到kill ring以便我可以在此路径上使用C-y
?
答
如何使用neo-buffer--get-filename-current-line
获得在点的文件名或目录(这是一个字符串),然后用kill-new
到制作绳的最新杀死戒指?
该解决方案结合时,看起来是这样的:
(kill-new (neo-buffer--get-filename-current-line))
答
您可以打开文件,然后通过M-:'buffer-file-name'找到位置。既然你想猛拉它,你可以遵循一些这里列出的方法之一: File path to clipboard in Emacs
+2
之所以这样,答案是不太理想的,是因为它是不需要实际打开文件,以获得在点的文件名或目录。 Neotree是一个生成文件和目录的树视图的库。为了准确描述目录/文件的树形视图,neotree必须知道文件名和目录名。 Neotree不打开列出的每个文件来提取'buffer-file-name'。因此,只需要检查neotree的代码来查看已经可用于提取文件名或目录的点。 – lawlist
嗨lawlist,谢谢。我应该如何使用您的解决方案?我在elisp中真的很新。我是否定义了一个使用neo-buffer功能的交互功能?我可以从我的init.el访问该私有函数吗? – ninrod
一个想法是在你的'init.el'文件中放置下列函数'ninrod',保存文件并重新启动Emacs:'(defun ninrod()(interactive)(kill-new(neo-buffer-get -filename电流线)))'。您可以使用'M-x ninrod'来复制您的文件名或目录,然后粘贴/猛击您想杀的任何地方。粘贴/拆卸的方法与以往一样。 – lawlist
,工作flawelessly。非常感谢你。 – ninrod