Emacs

2008-10-14 18 views
37

में चिह्नित (चयनित) टेक्स्ट के लिए खोज रहा है मैं कोड और अन्य टेक्स्ट फ़ाइलों को देखने और संपादित करने के लिए emacs का उपयोग करता हूं। मैं जानना चाहता था कि वर्तमान बफर में चिह्नित पाठ के लिए आगे या पीछे की ओर जाने का कोई तरीका है या नहीं। नोटपैड या वर्डपैड में मैं क्या कर सकता हूं। जैसा कि मैं बफर में कुछ पाठ चिह्नित कर सकता हूं और सी-एस या सी-आर कर सकता हूं और पूरे खोज टेक्स्ट में टाइप किए बिना चिह्नित टेक्स्ट के साथ खोज करने में सक्षम हूं?Emacs

धन्यवाद,

रोहित

उत्तर

30

हां। M-W (चयनित पाठ की एक प्रति प्राप्त करने के लिए) C-s <RET> C-y <RET>। फिर आवश्यकतानुसार C-s दोहराएं। इसी प्रकार C-r के लिए।

+0

खुशी है कि मैं मदद कर सकता हूं। संयोग से, मैनुअल का प्रासंगिक खंड "20.1 बढ़ती खोज की मूल बातें" है। च idm emacs जी बेसिक Isearch http://www.manpagez.com/info/emacs/emacs_95.php –

+0

इस तरह मैंने पहले से ही यह किया है ... मुझे कुछ आश्चर्य है कि एक भी अंतर्निहित कमांड नहीं है इसके लिए। – fbmd

+8

यह स्पष्ट पाठ की खोज करने के तरीके की व्याख्या नहीं करता है। यह बताता है कि कॉपी किए गए टेक्स्ट की खोज कैसे करें। – Jackson

81

@Alex इसे नाखून करता है।

वर्तमान चिह्न के बाद शब्द खोजने के लिए मैं अक्सर उपयोग करता हूं एक और विकल्प C-s C-w है। C-w मारने से बार-बार अतिरिक्त शब्दों के साथ खोज बढ़ जाती है (उदा।, C-s C-w C-w C-w वर्तमान चिह्न के बाद 3 शब्दों की खोज)।

इसी तरह, C-s C-y वर्तमान चिह्न के बाद शेष रेखा के लिए खोज करता है और C-s C-M-y चिह्न के बाद चरित्र की खोज करता है। ये दोनों एक ही तरीके से दोहराने योग्य हैं। डब्ल्यूसी - - रोंएम - y

+1

वास्तव में एक आसान टिप। – Rohit

+0

इसी प्रकार, 'सी-आर सी-डब्ल्यू' निशान के बाद शब्द के लिए पिछड़ा ("आर" = रिवर्स) खोज करता है। और 'सी-आर सी-डब्ल्यू सी-डब्ल्यू' निशान के बाद दो शब्दों के लिए पिछड़ा खोज करता है। – dougkramer

+2

यह स्वीकार्य उत्तर होना चाहिए। –

6

यह करने के लिए कम से कम कुंजी अनुक्रम एम है।

+0

यदि आप सभी अपरकेस टेक्स्ट को हाइलाइट कर रहे हैं तो भी शब्द के निचले मामले के लिए यह खोजों को ध्यान देने योग्य है। – maxywb

+0

यह एक कीस्ट्रोक है, कमांड नहीं, जिसका अर्थ है कि यह किसी भी पर्यावरण में अर्थहीन है जो उस पर ओवरराइड होता है। यह पता लगाने के लिए कि आप किस आदेश का उल्लेख कर रहे हैं, यह हमें जंगली हंस चेस पर भेजता है। –

12

मैं बाद में आवृत्तियां लगता है जिसके बाद एक से अधिक लगातार सी टाइप करने के समस्या नहीं है का उपयोग कर रहा:

(defun search-selection (beg end) 
     "search for selected text" 
     (interactive "r") 
     (kill-ring-save beg end) 
     (isearch-mode t nil nil nil) 
     (isearch-yank-pop) 
    ) 
    (define-key global-map (kbd "<C-f3>") 'search-selection) 

पिछले कोड का नुकसान है कि चयनित पाठ को कॉपी किया है खिंचाव निम्नलिखित कोड में यह समस्या नहीं है:

(defun search-selection (beg end) 
     "search for selected text" 
     (interactive "r") 
     (let (
      (selection (buffer-substring-no-properties beg end)) 
      ) 
     (deactivate-mark) 
     (isearch-mode t nil nil nil) 
     (isearch-yank-string selection) 
    ) 
    ) 
    (define-key global-map (kbd "<C-f3>") 'search-selection) 
2

ऊपर दिए गए उत्तरों (स्वीकृत सहित) बहुत बोझिल IMHO हैं। मुझे निम्नलिखित जानकारी मिली और यह अच्छी तरह से बेहतर है:

"Ctrl + s Ctrl + w"। यह वर्तमान शब्द खोजेगा, लेकिन आपको पहले कर्सर की शुरुआत में अपना कर्सर ले जाना होगा।

http://xah-forum.blogspot.com/2009/08/search-word-under-cursor-in-emacs.html

+0

ठीक है, यह बिल्कुल है कि @ क्रिस-कॉन्वे https://stackoverflow.com/a/203026/316232 पर इंगित किया गया है। – nephewtom

3

अन्य उत्तर प्रतिलिपि बनाए गए पाठ, या कैसे बिंदु पर शब्द के लिए खोज करने के लिए के लिए खोज करने के लिए कैसे का वर्णन। लेकिन उनमें से कोई भी वास्तव में वर्णन नहीं करता है कि "चिह्नित पाठ के साथ कैसे खोज करें।"

निम्नलिखित हुक जोड़ा जा रहा है ताकि वर्तमान में चयनित पाठ एक iSearch के लिए इस्तेमाल किया पाठ है यह कर देगा:

(defun jrh-isearch-with-region() 
    "Use region as the isearch text." 
    (when mark-active 
    (let ((region (funcall region-extract-function nil))) 
     (deactivate-mark) 
     (isearch-push-state) 
     (isearch-yank-string region)))) 

(add-hook 'isearch-mode-hook #'jrh-isearch-with-region) 

युक्ति: अच्छी तरह से expand-region साथ इस जोड़े।

3

इसके लिए एक शानदार कार्य है: isearch-forward-symbol-at-point।यह उस शब्द की सभी घटनाओं को हाइलाइट करता है जहां आपका बिंदु स्थित है - शब्द की शुरुआत में बिंदु को रखने की आवश्यकता नहीं है। फिर आप सी-एस या सी-आर के साथ अगले या पिछले स्थान पर जा सकते हैं।

ध्यान दें कि यह एक सटीक मिलान है: यदि आप इसे hi पर उपयोग करते हैं तो यह chill से मेल नहीं खाएगा।

मैप किए गए command-f (मैक ओएसएक्स): (global-set-key (kbd "s-f") 'isearch-forward-symbol-at-point) init फ़ाइल में मैप किया गया।

+0

यह (लगभग) ठीक है जो सवाल पूछता है। केवल अंतर यह है कि 'isearch-forward-symbol-at-point' स्वचालित रूप से बिंदु पर टेक्स्ट का चयन करता है। यह समस्याग्रस्त हो सकता है यदि आप एक शब्द पर विचार करते हैं जो Emacs एक शब्द को मानता है। हालांकि, अभी भी उपयोगी है। जीएनयू Emacs 24.5.1 पर डिफ़ॉल्ट बाध्यकारी 'एम-एस 'है। –