Emacsで張り付け文字列を検索

EmacsにはインクリメンタルサーチであるisearchがC-sとC-rに割り当てられています。ただ、C-s C-yと入力しても、ミニバファにキルリングを張り付け(ヤンク)することができないため、わざわざ手動で入力したり、マウスでミニバッファをクリックしてからC-yの張り付けを行なっていました。

これは、isearchの仕様なんだと諦めていろいろGoogle検索をしてみましたが、なかなか情報が見つからないのでM-x describe-key RET C-sでコマンドの説明を読むと、解決策と別の便利な機能が記されていました。

まず当初の目的、キルリングの文字列を張り付けて検索する方法は、C-s RET C-yでした。インクリメンタルサーチのままでは不可能なので、立て続けにRETを入力すると、完全マッチの検索に切り替えることができるそうです。またC-s M-cでもヤンクができるようになります。

また、リージョン指定した文字列を検索したい場面もけっこうあります。一度、M-wなどでコピーしてキルリングに入れてしまえば、先程のテクニックを流用することができますが、少し冗長な作業になってしまいます。なんと、isearchにはこの手間を省く機能も備わっているのです。

C-sでisearchを起動してから、C-M-yを入力してみてください。カーソルが一つ右に移動してリージョンが指定されたのと同時に、ミニバッファの検索文字列に反映されているのがおわかりでしょうか。C-M-yを入力しすぎた場合は、C-M-wで一つ戻ることができます。

あまり使わないと思いますが、検索の履歴も呼び戻すことができます。C-sの後にM-nとM-pで操作することができます。ちなみにこの機能のことをキルリングではなく、サーチリングというらしいです。

今回の経験で、isearchの多機能さと、describe-keyの重要性を学ぶことができました。