سؤال

أستخدم emacs لعرض وتحرير التعليمات البرمجية والملفات النصية الأخرى.أردت معرفة ما إذا كانت هناك طريقة للبحث للأمام أو للخلف عن النص الذي تم وضع علامة عليه في المخزن المؤقت الحالي.على غرار ما يمكنني القيام به في المفكرة أو الدفتر.كما هو الحال في هل يمكنني وضع علامة على بعض النص في المخزن المؤقت وإجراء C-s أو C-r وأكون قادرًا على البحث باستخدام النص المحدد دون الكتابة فعليًا في نص البحث بالكامل؟

شكرًا لك،

روهيت

هل كانت مفيدة؟

المحلول

نعم. M-W (للحصول على نسخة من النص المحدد) C-s <RET> C-y <RET>. ثم كرر C-s حسب الحاجة. وبالمثل لC-r.

نصائح أخرى

وAlex المسامير ذلك.

وثمة خيار آخر يمكنني استخدام في كثير من الأحيان هو C-s C-w للبحث عن كلمة بعد علامة الحالية. ضرب C-w يزيد مرارا بحث مع كلمات إضافية (مثل عمليات البحث C-s C-w C-w C-w على الكلمات 3 بعد علامة الحالية).

وعلى نحو مماثل، وعمليات التفتيش C-s M-s C-e لبقية السطر بعد علامة وC-s C-M-y البحث الحالية للحرف بعد علامة. هذه هي كل تكرار في نفس الطريق (السابق بتكرار إلى حد ما برعونة M-s C-e بعد C-s).

وأنا باستخدام التالية التي ليس لديها مشكلة الحاجة إلى كتابة أكثر من واحد على التوالي C-على إيجاد وقت لاحق أحداثا:

    (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)
تصف

وإجابات أخرى كيفية البحث عن النص المنسوخ، أو كيفية البحث عن كلمة في النقطة. ولكن أيا منها لا تصف الواقع كيفية "بحث مع النص ملحوظ."

وإضافة هوك التالية سوف تجعل من ذلك أن النص المحدد حاليا هو النص المستخدم ل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)

نصيحة: هذا أزواج بشكل جيد مع توسيع-المنطقة

وأقصر تسلسل المفاتيح للقيام بذلك هو M - ث C - ق M - ص

وهناك وظيفة كبيرة لهذا: isearch-forward-symbol-at-point. ويسلط التقرير الضوء على كافة تواجدات الكلمة حيث يقع وجهة نظرك - لا حاجة لوضع نقطة في بداية الكلمة. ثم يمكنك الانتقال إلى التالي أو السابق مع C-S أو C-ص.

ملحوظة أنه هو تطابق تام: إذا كنت تستخدم على hi فإنه لا تتطابق chill على سبيل المثال

وأنا تعيينها لو أن command-f (ماك OSX): (global-set-key (kbd "s-f") 'isearch-forward-symbol-at-point) في ملف الحرف الأول

والأجوبة فوق (بما في ذلك واحد يقبل) هي IMHO مرهق للغاية. لقد وجدت المعلومات التالية ومثل ذلك أيضا أفضل:

<اقتباس فقرة>   

وعلى "السيطرة + ق السيطرة + ث". وهذا البحث الكلمة الحالية، ولكن يجب عليك نقل   المؤشر إلى بداية الكلمة الأولى.

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

يمكنك العثور على مساعدة C-s عن طريق القيام بـ C-h k C-s، وهي تقول:

اكتب DEL لإلغاء عنصر الإدخال الأخير من نهاية سلسلة البحث.اكتب Ret للخروج ، وترك نقطة في الموقع وجدت.اكتب LFD (CJ) لمطابقة نهاية الخط.اكتب CS للبحث مرة أخرى إلى الأمام ، CR للبحث مرة أخرى للخلف. اكتب C-w لسحب الكلمة أو الحرف التالي من المخزن المؤقت في نهاية سلسلة البحث ، وابحث عنها.اكتب CMW لحذف الحرف من نهاية سلسلة البحث.اكتب CMY إلى yank char من المخزن المؤقت إلى نهاية سلسلة البحث والبحث عنها.اكتب MS CE إلى yank بقية الخط في نهاية سلسلة البحث والبحث عنها.اكتب CY لانتزاع السلسلة الأخيرة من النص المقتول.اكتب بلدي لاستبدال السلسلة فقط yanked في موجه البحث مع قتل سلسلة قبل ذلك.اكتب CQ لاقتباس حرف التحكم للبحث عنه.اكتب CX 8 RET لإضافة حرف للبحث عن طريق Unicode ، مع الانتهاء.CG أثناء البحث أو عند فشل البحث يلغي الإدخال إلى ما تم العثور عليه بنجاح.CG عندما يكون البحث ناجحًا الإجهاض ويتحرك إلى نقطة البداية.

إذا حاولت الخروج مع سلسلة البحث التي لا تزال فارغة ، فإنها تستدعي البحث غير المؤسسي.

اكتب M-c لتبديل حساسية حالة البحث.اكتب MS I لتبديل البحث في نص غير مرئي.اكتب M-r لتبديل وضع التعبير العادي.اكتب M-s w لتبديل وضع الكلمة.اكتب M-s _ لتبديل وضع الرمز.اكتب MS 'لتبديل طي الحرف.

اكتب M-s SPC لتبديل مطابقة المسافات البيضاء.في عمليات البحث الإضافية ، تتطابق المساحة أو المساحات عادةً مع أي مساحة بيضاء محددة بواسطة المتغير "Search-WhiteSpace-Regexp" ؛راجع أيضًا المتغيرات 'isearch-lax-whitespace' و 'Isearch-regexp-lax-whitespace'.

اكتب M-s e لتحرير سلسلة البحث في المخزن المؤقت.

كما يتم دعم حلقة بحث لسلاسل البحث الـ 16 السابقة.اكتب M-n للبحث عن العنصر التالي في حلقة البحث.اكتب MP للبحث عن العنصر السابق في حلقة البحث.اكتب CMI لإكمال سلسلة البحث باستخدام حلقة البحث.

اكتب M- ٪ لتشغيل "استعلام الاستعلام" مع سلسلة لاستبدالها من سلسلة البحث الأخيرة.اكتب CM- ٪ لتشغيل "استعلام-ريجكس-REGEXP" مع سلسلة البحث الأخيرة.اكتب MS O لتشغيل "تحدث" التي تعرض سلسلة البحث الأخيرة.اكتب MS HR لتشغيل "Aightlization-Regexp" الذي يسلط الضوء على سلسلة البحث الأخيرة.

اكتب C-h b لعرض كافة روابط مفاتيح Isearch.اكتب ch k لعرض وثائق مفتاح isearch.اكتب ch m لعرض وثائق وضع isearch.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top