4

isearchにいるときにアンダースコアを挿入する必要がM-uあります(isearch-regexpおよびその逆のバリアント)。

ない

(define-key isearch-mode-map (kbd "M-u") 'insert-underscore)

または

(add-hook 'isearch-mode-hook
      (lambda ()
       (local-set-key (kbd "M-u") 'insert-underscore)
      ))

insert-underscore単に「_」を挿入する私の関数です。メインフレームとミニバッファでも動作しますが、isearchでは動作しません...

ありがとうございました!

4

1 に答える 1

4

Isearchは通常のコマンドを使用しません。 (kbd "_")他のすべての印刷可能な文字とともに、の特別なコマンドにバインドされisearch-mode-mapます。明らかではありませんが、「isearch-mode」ではキーを押すと多くのことが起こります。表示が新しい結果で更新され、ラッピングの可能性などがあります。

これを機能させるには、生のキーボードイベントを操作する必要があります。

(defun underscore ()
  (interactive)
  (isearch-unread-key-sequence (list ?_)))

(define-key isearch-mode-map (kbd "M-u") 'underscore)

このコードは堅牢ではないことに注意してください。たとえば、数値プレフィックスは機能しません。

編集:しばらくの間私の心に浸透させた後、これが翻訳キーマップの正確なユースケースであることに気づきました

(define-key key-translation-map (kbd "M-u") (kbd "_"))

Emacsは壮大ではありませんか?

于 2012-12-27T16:15:14.420 に答える