2009-12-12 14 views
12

Eğer bir metin bölgesini seçersem, isearch (veya başka bir arama komutu) kullanmak için sadece bölge içinde arama yapmamın bir yolu var mı? Bunu bir makro içinde teknikle kullanmayı umuyordum.emacs newbie question - bir bölge içinde arama yapmak için kullanılır

Bu açık olabilir, ancak hızlı bir arama yaptım ve bir yol bulamadım.

+0

Emacs hakkında bir soru sorduğunuzda, yanıt için hazır olun, "sadece vi kullanın". ;-) –

+6

@dave ve tersi – vedang

+0

@Dave - Rodger. 5 yıldır vi kullanıyorum ve emacs denemeye karar verdim. Ben sadece bir hafta boyunca kullanıyorum, ama söylemeliyim ki, ben şimdiye kadar çok beğeniyorum ... – Upgradingdave

cevap

25

Sen komutları bu kombinasyonunu kullanabilirsiniz:

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

karşın, yine de, bu biraz külfetli olduğunu, burada sizin için otomatik yukarıda yapar yeni bir komut var.

(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))) 

Şimdi sadece Mx ISearch ileri-bölge RET sometext yapın ya da benzeri tercihinize önemli bir bağlanma için bağlamak: Trey Jackson söylediği gibi

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

Teşekkürler, Trey, bu tamamen yeni bir imkanlar dizisi açıyor ;-) – Upgradingdave

+3

Dar hakkında hiçbir şey bilmiyordum ve genişletin. Seni nasıl seviyorum emacs. – mgalgs

17

, sen narrow-to-region kullanabilir ve widen. Klavye kısayolları için gireceğim. Varsayılan olarak devre dışı bırakıldıklarını ve emacların etkileşimli olarak ilk kullanımda "devre dışı bırakılmasını" isteyeceklerini unutmayın.

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

Çok teşekkürler, SO tekrardan geliyor. – Upgradingdave

+0

En az 10 yıl boyunca .emacs'de bir (global-set-key "\ C-xn" 'diğer pencere var) vardı, bunları gölgelediği konusunda hiçbir fikrim yoktu. Teşekkürler. –

İlgili konular