我假设您已经知道您可以检索以前的搜索字符串(在同一 Emacs 会话期间),在搜索时使用 M-p - 重复以获取较旧的搜索字符串。但是你还能做什么呢?
一般方法:
要保存当前搜索字符串,以便在当前 Emacs 会话期间用于后续搜索(例如,退出 Isearch 后),请将其复制到 kill-ring,使用 M-w . (如果您使用Isearch+,那么这不会退出搜索。使用 vanilla Emacs 会退出。)
要拉出当前搜索字符串末尾的 kill ring 中的任何内容,请在搜索时使用 M-y。 (重复 M-y 将之前的 kill-ring 条目抽出。)
更多可能性:
杀戮戒指可以随着您编辑内容而改变。如果您想更持久地保存搜索字符串(但仍仅用于当前 Emacs 会话),您可以将其保存在 secondary selection、变量或寄存器中。
二次选择
如果您使用库second-sel.el,那么您可以使用C-u C-M-y 将区域选择转移到辅助选择。否则,只需在鼠标拖动的同时按住 Meta 键,即可为辅助选择选择文本。
如果您使用 Isearch+,那么在搜索时,您可以使用 C-M-y 将辅助选择拉到当前搜索字符串上。
变量
您可以使用例如M-: (setq foo C-y) 将搜索字符串保存在变量中(使用C-y 从kill-ring 中提取字符串)。
如果您使用 Isearch+,则可以在搜索时使用 M-: foo 在当前搜索字符串的末尾插入变量的值。 M-: 在 Isearch 期间绑定到命令 isearchp-eval-sexp-and-insert:您输入要评估的 sexp(在本例中为变量),评估该 sexp 的结果将附加到搜索字符串。
注册
如果您使用 Isearch+,那么您可以在搜索时使用 C-x r g 将寄存器的值附加到搜索字符串中。系统会提示您使用该寄存器。 (您可以使用寄存器命令,例如copy-to-register (C-x r s) 将字符串放入寄存器。)
持久性
要永久保存搜索字符串,以便您可以在以后的 Emacs 会话中重用它,只需将其用作 用户选项 的值(保存在您的 custom-file 或您的 init 文件中)。
(defcustom my-search-string "sleep\|nap\|tired\|exhausted\|woke"
"My favorite search string."
:type 'string :group 'convenience)
然后,如果您使用 Isearch+,只需使用 M-: my-search-string 在搜索时检索它(见上文)。