2017-06-14 70 views
2

我有一個日誌文件,它填充了我生活中發生的事情,然後再進行搜索。我希望能夠使用我在某些方面保存的術語以交互方式進行搜索,因此我不必繼續輸入。例如,使用regexp-isearch-forward,我可能會使用術語"sleep\|nap\|tired\|exhausted\|woke"來查找所有與睡眠和疲勞有關的內容。用複雜的術語保存搜索結果

我想放像

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

在文件的頂部,並與C-x C-e運行它,但不起作用。任何人都可以提出一個解決方案,提供所需的行爲?

回答

1

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

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

next-errorM-g nM-g M-n)和previous-errorM-g pM-g M-p)通過匹配週期。

0

我假設你已經知道,你可以找回以前的搜索字符串(同Emacs會話期間),使用M-p,而搜索 - 重複變老搜索字符串。但你還能做什麼?

一般方法:

  1. 要保存當前的搜索字符串,當前Emacs會話期間後續搜索應用(例如,戒菸ISEARCH後),將其複製到殺環,使用M-w。 (如果你使用Isearch+那麼這不會退出搜索。香草的Emacs它。)

  2. 要拷貝無論是在在當前搜索字符串的結尾殺戒,使用M-y,而搜索。 (重複M-y猛拉以前殺環條目。)


更多的可能性:當你編輯的東西

剪切環可以改變。如果您希望更持久地保存搜索字符串(但僅針對當前的Emacs會話),則可以將其保存在secondary selection,變量或寄存器中。

輔選擇

如果您使用的庫second-sel.el那麼你就可以在區域選擇傳送到使用C-u C-M-y二次選擇。否則,只需在按住Meta鍵的同時用鼠標拖動,即可選擇二級選擇的文本。

如果您使用Isearch +,那麼在搜索時,您可以使用C-M-y將當前搜索字符串的二級選擇插入到當前搜索字符串中。

可變

可以保存搜索字符串中使用的變量,例如,M-: (setq foo C-y)(猛拉使用C-y殺環的字符串)。

如果使用Isearch +,則可以在搜索時使用M-: foo將變量的值插入當前搜索字符串的末尾。 M-:在Isearch期間被綁定爲命令isearchp-eval-sexp-and-insert:您輸入一個sexp來評估(在這種情況下,該變量),並評估sexp的結果被追加到搜索字符串中。

註冊

如果使用ISEARCH +那麼你可以使用C-x r g,而搜索到寄存器的值追加到搜索字符串。系統會提示您輸入寄存器。 (您可以使用註冊命令,如copy-to-registerC-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進行檢索,而檢索(見上文)。