如何完成emacs中的文件路径?


14

举例来说,我正在编辑配置文件,并且想输入路径。是否有emacs插件,可让您在该缓冲区中完成文件路径?我已经搜索过了,那里有一个不计其数的完成插件。


1
我不清楚您在这里问什么。现代emacen在迷你缓冲区中具有路径完成功能(find-file例如,使用时)。您是否希望内容缓冲区中有类似行为?
dmckee ---前主持人小猫,

1
@dmckee-是的,这实际上正是我想要的。
杰森·贝克

@dmckee这个操作系统特定吗?我在ubuntu的“查找文件”中完成了文件名,但是在OSX中没有完成。例如,我在根目录中有一个名为“引用”的文件,并且在小型缓冲区中:“查找文件:〜/”,然后输入“ ref”,我希望完成但什么都不会发生。我需要安装一些东西吗?
Zeynel 2013年

@Zeynel在Mac OS中也可以正常工作。使用Apple安装版本或自制版本。还可以在旧机器上使用芬克版本。
dmckee ---前主持人小猫,

@dmckee奇怪。也许我问一个新问题。谢谢。
Zeynel 2013年

Answers:


10

尝试Hippie Expand,它可能是其中之一try-complete-file-name。您可以更改嬉皮扩展将用于扩展文件名的扩展功能的顺序和列表。

或者,您甚至可以编写仅用于文件名扩展的自定义包装器。就像是:

(global-set-key (kbd "C-M-/") 'my-expand-file-name-at-point)
(defun my-expand-file-name-at-point ()
  "Use hippie-expand to expand the filename"
  (interactive)
  (let ((hippie-expand-try-functions-list '(try-complete-file-name-partially try-complete-file-name)))
    (call-interactively 'hippie-expand)))

14

我通常键入Ctrl- X Ctrl- F就像我会打开一个文件,但不是按RET我按Ctrl- A Ctrl- K Ctrl- G复制的路径,然后将其粘贴到缓冲区我与编辑Ctrl- Y

我并不需要那么频繁,但是如果我真的想要一个更好的解决方案,我一定会使用Trey Jackson的解决方案hippie-expand。我考虑过如何hippie-expand在初次回答时做一个更好的方法,但是我不知道并且懒得查找它,所以我只写了所做的事情。


笨拙而优雅,但可以工作。我不得不承认自己不时这样做。我仍然对更整洁的解决方案感兴趣,但是……
dmckee ---前主持人小猫,

确实。不过,与手动输入相比,这似乎并没有多少工作。
杰森·贝克

1
@Jason Baker:这取决于您是否知道确切的文件名,或者是否需要对其进行探索。
Teddy

6

开箱即用的香草

M-x comint-dynamic-complete-filename

在comint模式之外工作。当然,你可以使用迷你缓冲区的动态扩展,以使用更少的按键来得到它(例如,的Mx COMI NT- DY namic- Ç omplete -f ilename)。或者,如果您将经常使用它,则可以使用将它绑定到您选择的键序列上global-set-key



0

最近,我发现了松山智宏(@ m2ym)的作品,其emacs软件包的质量给我留下了深刻的印象。

我在大多数自动完成扩展方面都遇到了麻烦,发现它们都有主要缺点。

查看Tomo的自动完成功能(http://auto-complete.org/doc/manual.html),安装起来很容易(我在Linux上),并且以现代方式满足了许多自动完成的需求。

当然,您对缓冲区中文件名完成的请求已得到很好的满足。

最后,如果您也碰巧也使用Ruby,请确保不要错过他的RSense扩展;再次,最好的。


链接已断开
xuhdev15年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.