是否有可能在emacs中以一种方式搜索文件名,我首先在空格中输入空格,然后输入文件名本身?例如。 org notes org 或将切换到notes.org。
或者有没有办法编写这样的函数来做到这一点?
答案 0 :(得分:11)
如果你使用ido,你可以输入org c-space notes。
Ido需要一段时间才能习惯,但就个人而言,如果没有它,我就无法生存。
答案 1 :(得分:3)
Anything可以轻松完成此操作,运行任何内容,在缓冲区名称中输入任何单词,结果显示:
按照此安装:http://emacs-fu.blogspot.com/2011/09/finding-just-about-anything.html
如果你想过滤缓冲区,这里有一个示例配置:
(require 'anything-config)
(global-set-key (kbd "C-x b")
(lambda() (interactive)
(anything
:prompt "Switch to: "
:sources
'(anything-c-source-buffers))))
答案 2 :(得分:1)
我完全赞同安德斯,IDO非常有用。例如,如果你有两个缓冲区“some-video-page.js”和“video.py”,你可以输入“C-x b vidjs”或“C-x b vidpy”来切换到其中任何一个。
(ido-mode)
(setq ido-enable-flex-matching t)
还要考虑使用ibuffer来组织缓冲区。您可以按完整文件名过滤缓冲区,并根据当前过滤器关闭多个缓冲区。
(global-set-key (kbd "C-x C-b") 'ibuffer)
回到你的问题。现在有uniquify库随Emacs一起提供,默认情况下它将包含缓冲区名称中父目录的名称。但这是我们正在谈论的emacs,您可以根据需要自定义它。我有一个自定义文件挂钩,只有python模块名称前缀python缓冲区。 IDO对您来说是否足够,或者您仍然希望自定义切换缓冲区功能吗?
答案 3 :(得分:1)
Icicles开箱即用 - 只需使用 S-TAB 代替 TAB 即可完成 - 即apropos completion比前缀完成。
要完成多种模式(例如子字符串)而不考虑其顺序,请使用progressive completion。使用 S-SPC 分隔模式。
C-x C-f notes S-SPC org
或
C-x C-f org S-SPC notes
或者,为了确保org
与文件扩展名匹配,请使用\.org
。 (或者使用 C -` 来切换子串/正则表达式匹配,即转义正则表达式特殊字符。)
如果使用缓冲区名称完成(或任何其他类型的完成)而不是文件名完成,则相同。
对于Ido的“flex”匹配, Icicles 具有相同的功能(称为“分散”匹配),以及其他几种类型的fuzzy matching。 (但是所有形式的模糊匹配都没有它们听起来那么有用,恕我直言。)
答案 4 :(得分:1)
默认情况下,您可以使用名称通配来执行此操作。
C-x b *.org
TAB
Emacs会自动将点移动到星号后面,这样您就可以立即继续输入部分缓冲区名称。
同样*org
比*.org
更容易输入,并且可能会为您的目的获得足够相似的结果。
答案 5 :(得分:1)
Iswitchb并没有做到这一点,而是关闭。它显示了迷你缓冲区中的缓冲区名称列表。在您键入时,列表会缩小到名称中包含您键入的文本的缓冲区(在任何地方,而不仅仅是在开头)。因此,如果您键入.org
,那么您将进入名称中包含.org
的缓冲区。要在这些文件中打开特定文件,您需要将光标向左移动并键入文件名的最后一个字母,或者按C-r
或C-s
在匹配项之间轮换。< / p>
Emacs wiki有一个page on Iswitchb和一个comparison of Icicles, Ido and Iswitchb。