【问题标题】:Save an isearch with complex terms保存包含复杂术语的 isearch
【发布时间】:2017-06-15 22:43:57
【问题描述】:

我有一个日志文件,里面填满了我生活中发生的事情,后来想搜索。我希望能够使用我在某些方面保存的术语以交互方式搜索它,这样我就不必继续输入它们。例如,regexp-isearch-forward 我可能会使用术语"sleep\|nap\|tired\|exhausted\|woke" 来查找与睡眠和疲倦。

我想写一些类似的东西

(regexp-isearch-forward "sleep\|nap\|nap\|tired\|exhausted\|woke")

在文件顶部并使用C-x C-e 运行它,但这不起作用。任何人都可以提出一个可以提供所需行为的解决方案吗?

【问题讨论】:

    标签: search emacs


    【解决方案1】:

    如果您不使用isearch,可以使用occurnext-error

    (defun my-occur ()
      (interactive)
      (occur "sleep\\|nap\\|nap\\|tired\\|exhausted\\|woke"))
    

    next-error (M-g n, M-g M-n) 和 previous-error (M-g p, M-g M-p) 在比赛中循环。

    【讨论】:

      【解决方案2】:

      我假设您已经知道您可以检索以前的搜索字符串(在同一 Emacs 会话期间),在搜索时使用 M-p - 重复以获取较旧的搜索字符串。但是你还能做什么呢?

      一般方法:

      1. 要保存当前搜索字符串,以便在当前 Emacs 会话期间用于后续搜索(例如,退出 Isearch 后),请将其复制到 kill-ring,使用 M-w . (如果您使用Isearch+,那么这不会退出搜索。使用 vanilla Emacs 会退出。)

      2. 要拉出当前搜索字符串末尾的 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 在搜索时检索它(见上文)。

      【讨论】:

        猜你喜欢
        • 2021-10-30
        • 2011-02-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-24
        • 1970-01-01
        相关资源
        最近更新 更多