在任何一个编辑器中穿梭时,充满了选择:转到哪个buffer, 打开哪个文件,跳到哪个窗口,定位哪个函数,设置哪个选项。。。比如在Emacs里面,俺C-x b之后它就让我输入一个buffer 名,虽然它都知道有哪些buffer, 但还是让我输,少输入几个字母敲了回车,结果它给我新创建了一个buffer ! 真是相当不给力啊。

ido/anything 这样的扩展就是把备选项直接给你列出来,你可以输入几个字来缩小备选范围,也可以用其它键来导航、选择。


ido - interactively do things with buffers and files

当你在 Emacs 中穿梭,ido-mode 有助于提高你的效率:通过M-x ido-mode打开后,在切换buffer(C-x b 或者M-x switch-buffer), 打开文件(C-x C-f 或者M-x find-file),打开目录浏览(C-x d 或者M-x dired)时,它会在minibuffer中列举出备选项,方便你选择(可以部分匹配,可以用左右键选择上一个/下一个备选项等等)。

[emacs] 用 ido 或 anything 进行选择

ido-mode其实是ido风格的一个应用,ido目的很简单,就是提供一种从列表中选择一个备选项的方法,你也可以在自己的扩展中调用ido-completing-read来获取用户的选择

     (setq mylist (list "red" "blue" "yellow" "clear" "i-dont-know"))
     (ido-completing-read "What, ... is your favorite color? " mylist)


(Emacs原本在swtich-buffer/find-file时使用自己completing-read函数,只不过风格不同:不是预先列举出备选项,而是得用tab键来补全。)

虽然在GNU Emacs 22时ido就已经被收录进去了,但GNU Emacs Manual中没有相应的文档说明,想要了解的话还是到EmacsWik去看吧: EmacsWiki: Interactively Do Things。该页面还提供了一些用ido-completing-read 实现的扩展,比如M-x 时列出所有命令、idomenu 列出所有函数名并跳转等。


anything - open anything / QuickSilver-like candidate-selection framework

anything 的基本能力跟 ido 很类似,也是列举备选项供用户选择,差异在于:

  1. 用一个临时buffer来列举备选项,每行一个(而ido是在minibuffer中)
  2. 缺省不改变find-file, switch-buffer 等命令的行为,而是用单独的命令激活(比如M-x anything-find-files或者<f5> a C-x C-f )
  3.  匹配备选项时支持多个关键字(用空格隔开)
  4. 有不少地方是先选择被操作的内容,然后选择操作,比如M-x anything-find-files 是先列举文件供选择,按<tab>后再选操作(打开文件、比较文件、拷贝/删除/复制文件、转到dired中查看、将eshell转到相应目 录等等)
  5. 自带了很多source,也就是选择/补全之上要完成的具体功能,不仅仅有切换buffer, 打开文件, recentf, kill-ring, imenu这些编辑器相关的内容,还有apt, gentoo, world-time, firefox-bookmarks等方面的功能

icicles 也有类似的功能,并且提供了很多种匹配方式,也提供了icicle-completing-read 替代 completing-read,不过我没有用过这个包,以后再补充说明吧。

ido-jump-to-window使用ido就很合适,一般用户在整个frame 上能有几个window呢?);而如果备选项比较多,用户可能需要用多个关键字搜索或者模糊搜索,则可以使用anything,比如整个工程的tags。至于代码补全,就看熟悉哪个、喜欢哪个了(回头有空来比较一下几个代码补全包)。

相关文章:

  • 2021-06-06
  • 2021-11-17
  • 2021-10-15
  • 2021-12-27
  • 2021-06-20
  • 2021-06-22
  • 2022-01-20
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-11-24
  • 2022-01-07
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案