home Glamenv-Septzen(ぐらめぬ・ぜぷつぇん)(archive)

Emacs/ナローイング(選択範囲で○○する)

作成日: 2003-05-30 14:53:46   /   last updated at: 2009-04-26 15:02:56
カテゴリ: Emacs 

sakuraエディタを初めとするWindows上で動作する一般的なテキストエディタでは、「選択範囲に限定して」置換する機能があります。これはプログラミング時に非常に便利で、vimにも搭載されています("V" or C-v で範囲選択した状態で":"にすると、開始-終了が選択範囲になったコマンド入力モードになります)。

Emacsでそれを行うには、「ナローイング」という機能を使います。

詳しい説明は以下のURLを参照して下さい。
http://www.math.s.chiba-u.ac.jp/~matsu/lisp/emacs-lisp-intro-jp_7.html

基本的な使い方としては、まず範囲を選択するにはC-@でリージョン選択を開始した後、範囲選択後

C-x n n

or

M-x narrow-to-region

を実行します。
初回実行時には「本当に実行しますか?」と聞かれます。y or yesで実行され、以降は質問されません。

すると、選択範囲外のテキストが一切見えなくなります。
なぜ初回実行時に質問されるかというと、ナローイングを知らない初心者にとっては混乱を招くからです。

この状態で検索や置換を行うと、表示されている範囲のみが対象になります。これで「選択範囲内での検索・置換」を行えます。

ナローイングを解除するには widen コマンドを実行します。

M-x widen

or

C-x n w

C-x n はnarrowing 系のプレフィクス・キーで、n がナローイング、wがwidenning と覚えればキー・マップもわかりやすいでしょう。

なお、自分で作成した関数をナローイング対応させる場合の注意点については上述のURLを参照して下さい。簡単にまとめると、save-restriction, save-excursion という二つの特殊形式(special format)を使用して「一時的に」ナローイングを解除して、処理終了後に戻すようにする必要があるかも知れません。


original url: https://www.glamenv-septzen.net/view/366