我怎样才能简单地搜索所有可用的文档文本?

时间:2014-03-13 12:31:38

标签: emacs

我确信Emacs的自我记录是伟大的,但是我似乎无法理解它应该如何使用,因为谷歌搜索我需要的东西通常只有几秒钟我通常度假到那个 - 不完全令人满意! (离线时根本不可能,我喜欢在旅途中等等。)

这让我想知道:为什么我不能只通过所有本地安装的文档“google”,在其中给我任何看起来像我正在搜索的字符串?我想甚至可以通过grep ping命令行中的所有文件来实现这一点,但这不可能是这样做的。

apropos听起来应该做类似的事情,但事实并非如此......我从来没有发现任何关于我还不知道的命令。

3 个答案:

答案 0 :(得分:6)

以下是我之前写的几个答案,可能会让你指出正确的方向。没有一个(默认)命令可以搜索所有文档源,但大多数情况下这都是正常的。

(我从来没有调查过这个领域的第三方图书馆;很可能会有更多全面的方法来搜索文档。)

M-x elisp-index-searchM-x emacs-index-search是出色的首个停靠点。

M-x info-apropos不太知名但非常有用,因为它搜索系统上所有已知Info文件的索引。当然,它相应地慢于其他功能。

最重要的是,请确保您知道如何使用信息阅读器! (有关更重要的详细信息,请参阅这些链接)。

我使用以下绑定快速获取apropos命令(并确保读取C-h v apropos-do-all,其行为可以通过为其提到的命令提供前缀参数来触发)。

;; Custom 'apropos' key bindings
(global-set-key (kbd "C-h C-a") 'my-apropos-prefix)
(define-prefix-command 'my-apropos-prefix nil "Apropos (a,d,f,i,l,o,v,C-v)")
(define-key my-apropos-prefix (kbd "a")   'apropos)
(define-key my-apropos-prefix (kbd "C-a") 'apropos)
(define-key my-apropos-prefix (kbd "d")   'apropos-documentation)
(define-key my-apropos-prefix (kbd "c")   'apropos-command)
(define-key my-apropos-prefix (kbd "f")   'apropos-command)
(define-key my-apropos-prefix (kbd "i")   'info-apropos)
(define-key my-apropos-prefix (kbd "l")   'apropos-library)
(define-key my-apropos-prefix (kbd "o")   'apropos-user-option)
(define-key my-apropos-prefix (kbd "v")   'apropos-variable)
(define-key my-apropos-prefix (kbd "C-v") 'apropos-value)

我也从中得到了很多用处:

(global-set-key (kbd "C-h C-l") 'find-library)
(global-set-key (kbd "C-h C-f") 'find-function)
(global-set-key (kbd "C-h C-k") 'find-function-on-key)
(global-set-key (kbd "C-h C-v") 'find-variable)

这些函数用于查看源代码,虽然describe-*命令在大多数文档中更有用,但对于Info手册尚未涵盖的库而言,这种情况并不少见。他们的源代码开头的评论。以上功能&因此,绑定可以非常方便地访问源代码以检查此类文档。

当然,C-h帮助前缀(或<f1>如果您愿意)有一堆默认绑定,包括上述{{1}的一些(但不是全部!) }命令。键入describe-*执行读取它列出的所有选项。有些你可能不关心,有些你可能会突然决定对你来说比你最后一次看起来更有趣。

同时检查C-h C-h

最后,请查看“帮助”菜单!特别是“搜索文档”子菜单,但如上所述,也要注意其他项目。

最后,我确实找到了实际 grey Emacs来源的原因。如果你有所有未压缩的东西,M-x apropos-command RET ^describe- RET像往常一样是你的朋友。但是,如果(未编译的)elisp全部被gzip压缩,那么你想要M-x rgrep(其存在有时是人们的新闻)。

答案 1 :(得分:1)

安装类似recoll的内容,然后您可以根据需要全文搜索整个硬盘。

  

Recoll是一款桌面搜索工具,可在友好的GUI中提供高效的全文搜索(从单字到任意复杂的布尔搜索),技术复杂程度最低,并且几乎没有必要的外部依赖关系。它在许多类Unix操作系统下运行,并且大部分独立于桌面环境。

答案 2 :(得分:0)

我会提到Icicles如何帮助您搜索信息手册。简短的回答是 Icicles 完成,无论是索引条目,节点名称还是菜单项,都允许您使用正则表达式,并且它允许您通过添加更多搜索模式来逐步缩小搜索范围。对于g,您可以同时匹配节点名称或节点内容或两者。

这里有一个更完整的答案:  How to efficiently search Info documentation

信息增强功能的 Icicles 文档页面为here。 它还提到了一种扁平化手册或部分手册,然后仅使用初步正则表达式定义的 上下文 的方法。搜索上下文可以像单个行(la grep),regexp .*一样简单,也可以像你想的那样复杂。