回答:
組み込み機能のみを使用する1つの方法を次に示します。
の最初の出現を含む行のポイントでbegin
、を押しC-SPCます。
次のオカレンスに移動しend
ます:
C-s end
RET
交換するfoo
とbar
:
M-% foo
RET bar
RET !
これはquery-replace
、バッファ全体が存在する場合、バッファ全体ではなくアクティブ領域で機能するという事実を利用します。
もちろん、カスタムコマンドを定義することもできます。
(defun replace-from-to (beg end str repl)
(interactive "sBegin: \nsEnd: \nsString: \nsReplacement: ")
(save-excursion
(goto-char (point-min))
(let ((start-pos (search-forward beg))
(end-pos (search-forward end)))
(replace-string str repl nil start-pos end-pos))))
このコマンドは常にバッファーの先頭から検索するため、ポイントは呼び出したときにbegin
/ foo
/の後にend
なります。
次の方法でキーバインディングを設定します。
(global-set-key (kbd "C-c r") 'replace-from-to)
一般的に、これはあなたが使用するものnarrow-to-region
です。
カーソルを(たとえば、検索によって)リージョンの先頭にC-SPC
移動し、を押してから、リージョンの末尾に移動して、と入力しM-x narrow-to-region
ます。これで、任意の検索および置換コマンドを発行でき、必要なコマンドはバッファーの狭い部分にのみ適用されます。完了したら、入力M-x widen
してバッファの内容を復元します。
begin
/ end
プログラミング言語で区切り文字あり、あなたはおそらく使用することができますC-M-Space
実行するためにmark-sexp
1つのコマンドで地域を選択します。
C-x n n
(narrow-to-region
)とC-x n w
(widen
)。