EMACS-DOCUMENT

=============>集思广益

Emacs搜索指南

首先,输入 C-h i 进入Info buffer. 按下 d 跳转到Info文档的最顶层,然后再按下 M-< 跳转到buffer的起始位置.

输入 C-s lisp 开始增量搜索 "lisp".

2016-11-07-emacs-search-lisp.png

按下回车会终止搜索,同时取消对匹配内容的高亮.

使用 C-r 可以实现向后搜索.

接下来,输入 C-s C-s 可以再次搜索最后一次搜索的字符.

按下 M-e 可以编辑要搜索的字符串. 让我们删掉minibuffer中的“lisp”,输入"mode",再按下回车开始新的搜索.

2016-11-07-emacs-search-mode.png

再次按下 M-p,你会发现光标回到minibuffer,而你可以通过 M-pM-n 来遍历之前搜索过的字符串,然后按下回车后就能够再次搜索这个字符串了.

现在让我们再一次输入 M-< 回到Info buffer的起始位置.

按下 C-s 开始新一轮的查找.

这一次我们输入 C-q C-j 来查数换行符.

这里 C-q 用来取消 C-j 或者说回车的特殊意义,而将它看成普通字符来看待: 如果你不输入 C-q, 而直接按下 C-j,则会直接退出搜索提示窗口.

我们按下 C-g 取消这次搜索.

接下来,我们用 C-s 来搜索mail.

注意到 “Mail” 与 “mail” 都会被搜索出来: 搜索是不区分大小写的.

按下 C-u C-SPC 可以跳回到你搜索前的位置.

在搜索的过程中,你随时可以通过按下 M-c (或者 M-s c) 来切换是否大小写敏感: 你会发现,按一下之后,只有“mail”高亮了.

在搜索过程中, 按下 M-s SPC 可以切换是否“宽松地匹配空格”: 所谓宽松地匹配空格,是指当你搜索类似“mail   client”(间隔3个空格)字符串时,依然能够匹配字符串“mail client”.

2016-11-07-emacs-search-loosely.png

在搜索过程中,还可以按下 M-s w 开启单词搜索. 这时搜索"mail"并不会匹配“email”.

现在尝试搜索一下 maii,会发现查找不到符合条件的内容,接下来按下 DEL 删除最后那个字符.

让我们再次搜索“mail”.

按下回车,定位到第一次出现mail的位置然后按下 M-b 回退一个单词的位置.

接下来按下 C-s C-w 搜索光标处的单词(此时应该是“mail”).

让我们再试试按下 C-s C-w C-w 会发现可以搜索光标处的多个单词.

按下 C-s C-M-y 则表示搜索光标处的字符.

类似的,按下 C-M-y C-M-y 会将接下来的两个字符也纳入搜索字符串中.

按下 C-M-w 会删除搜索字符串中最后那个字符.

再次按下 C-g 退出搜索.

Info buffers 默认情况下是只读的: 在单词上按下 M-d 可以拷贝该单词. 但是在一般的buffer中,你需要先用 C-M-SPC 选中光标处的“sexp”(这里,“sexp”就是指的一个单词), 然后再通过 M-w 拷贝它(或者说,将它放到kill-ring中).

现在再次按下 C-s, 然后按下 C-y 将文本粘贴(或者说是yank)到搜索域中.

按下 C-s C-M-i 会出现一个新window,列出了针对当前搜索字符串的所有可能的补全.

2016-11-07-emacs-search-completion.png

让我们再次按下 M-< 回到buffer起始位置,然后按下 C-s 再次搜索“mail”.

现在按下 M-s o 会发现列出了所有包含“mail”的那些行.

2016-11-07-emacs-search-occur.png

按下 C-s 再按下 M-r (或者 M-s r) 可以切换到基于正则表达式的搜索.

打开一个 org-mode buffer. 不断的按下 M-TAB 直到进入概览模式(此时所有内容都被折叠起来了).

尝试搜索下一被隐藏的内容: 你会发现当光标跳到搜索的内容处时,该处的内容会自动展现开来.

退出这次搜索吧.

依然在这个 org-mode buffer中, 按下 M-TAB 折叠起所在的子树然后按下 C-s M-s i 可以只搜索可见文本的内容. 隐藏的文本不会纳入匹配.

在任何buffer中, 按下 C-s C-h b 都可以浏览搜索的选项.

那些让我相见恨晚的功能有:

  • C-s M-e 可以编辑搜索字符串
  • C-s M-w 可以搜索光标处的单词
  • C-s M-r 切换是否进行正则匹配
  • C-s M-s o 用当前搜索字符串调用occur
  • C-s C-M-i 补全当前的搜索字符串