2009-12-12 13 views
12

テキストの領域を選択すると、領域内のみを検索できるisearch(または他の検索コマンド)を使用する方法がありますか?これをマクロ内のテクニックに使うことを望んでいました。emacs初心者の質問 - 地域内の検索方法

これは明らかかもしれませんが、私は迅速な検索を行い、方法を見つけることができませんでした。

+0

emacsで質問をするときは、いつでも「viを使う」という答えを用意してください。 ;-) –

+6

@dave およびその逆 – vedang

+0

@Dave - Rodger that。私はviを5年間使っていて、emacsを試してみることにしました。私は1週間だけ使用していますが、私はこれまでに多くのことを好んでいます... – Upgradingdave

答えて

25

あなたはコマンドの組み合わせを使用することができます

M-x narrow-to-region 
C-s SOMETEXT 
M-x widen 

けれどもが、それは一種の負担だ、ここに自動的に上記の処理を行い、新たなコマンドがあります。

(defun isearch-forward-region-cleanup() 
    "turn off variable, widen" 
    (if isearch-forward-region 
     (widen)) 
    (setq isearch-forward-region nil)) 
(defvar isearch-forward-region nil 
    "variable used to indicate we're in region search") 
(add-hook 'isearch-mode-end-hook 'isearch-forward-region-cleanup) 
(defun isearch-forward-region (&optional regexp-p no-recursive-edit) 
    "Do an isearch-forward, but narrow to region first." 
    (interactive "P\np") 
    (narrow-to-region (point) (mark)) 
    (goto-char (point-min)) 
    (setq isearch-forward-region t) 
    (isearch-mode t (not (null regexp-p)) nil (not no-recursive-edit))) 

は今だけのMxインクリメンタルサーチ・フォワード・地域のRETのSOMETEXTを行う、などお好みのキーバインディングにバインド:トレイ・ジャクソンが言ったように

(global-set-key (kbd "C-S-s") 'isearch-forward-region) 
+0

ありがとう、Trey、これは全く新しい可能性のセットを開きます;-) – Upgradingdave

+3

狭いそして広げる。私はあなたを愛し、イマック。 – mgalgs

17

、あなたがnarrow-to-regionを使用してすることができますwiden。私はキーボードショートカットのためにチップを作ります。デフォルトでは無効になっており、emacsは初回使用時に対話的に "undisable"を促します。

C-x n n 
C-s sometext 
C-x n w 
+0

おかげさまで、SOはもう一度やって来ます。 – Upgradingdave

+0

少なくとも10年間、自分の.emacsに(グローバルセットキー "\ C-xn"の他のウィンドウ)を持っていました。ありがとう。 –