たとえばfoo spam
、 のプロンプトの後に " " と入力した場合、検索の前に文字列を " " に変換するようにisearch-forward
関数にアドバイスするにはどうすればよいですか? 基本的に、テキスト内の隣接する 2 つの単語を検索したいと考えています。それを行うために使用できることはわかっていますが、正規表現を直接入力するのは面倒でエラーが発生しやすく、検索するその種の文字列がたくさんあります。コードを理解しようとしましたが、失敗しました。Emacs の達人が私を助けてくれることを願っています。ありがとう。isearch.el
foo[.?:,!]?[ \n]spam
isearch-forward-regexp
isearch.el
2 に答える
1
ここに大まかな亀裂があります:
(defun isearch-transform-string ()
(interactive)
(let* ((string (replace-regexp-in-string
"foo" "bar" isearch-string)))
(setq isearch-string string
isearch-message (mapconcat 'isearch-text-char-description string ""))
(isearch-search-and-update)))
(define-key isearch-mode-map (kbd "C-c C-t") 'isearch-transform-string)
のキーにバインドする必要があると思いますisearch-mode-map
。Mx が で正しく機能するとは思いませんisearch-mode
。
より強力な機能が必要な場合はisearch-search-fun-function
、関数を返す関数に設定できる変数があります。返された関数は、次の一致を見つけるために使用されます。
于 2013-05-01T16:56:22.303 に答える