1

たとえばfoo spam、 のプロンプトの後に " " と入力した場合、検索の前に文字列を " " に変換するようにisearch-forward関数にアドバイスするにはどうすればよいですか? 基本的に、テキスト内の隣接する 2 つの単語を検索したいと考えています。それを行うために使用できることはわかっていますが、正規表現を直接入力するのは面倒でエラーが発生しやすく、検索するその種の文字列がたくさんあります。コードを理解しようとしましたが、失敗しました。Emacs の達人が私を助けてくれることを願っています。ありがとう。isearch.elfoo[.?:,!]?[ \n]spamisearch-forward-regexpisearch.el

4

2 に答える 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 に答える