هل هناك امتداد أو وضع في emacs مشابه لـ Prounding.vim؟

StackOverflow https://stackoverflow.com/questions/2746484

  •  02-10-2019
  •  | 
  •  

سؤال

المحيط هو امتداد VIM أنيق يسمح لك بإحياء كتل النص مع الأقواس والأقواس وأي شخصية "محيط" تعسفية. وهو يدعم الفقرة والكلمة المحيطة ، لكنني كثيراً ما أستخدمها في الوضع المرئي. أنا ألعب مع Emacs وأتساءل عما إذا كان هناك شيء مشابه ؛ شيء سيسمح لي بتسليط الضوء على المنطقة ثم الحصول على المنطقة (أو المستطيل) المحاطة بأقواس أو قوسين أو علامات.

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

المحلول

يمكن التفاف هو ما تحتاجه.

SmartParens هو خيار ممتاز آخر إذا حاجة إلى لف شيء مع المحددات ، العلامات ، إلخ.

نصائح أخرى

أنا أستعمل الشر الحار. إنه يحاكي سلوك VIM ، لكن للأسف قد لا يكون ما يريده معظم مستخدمي EMAC لأنه يتطلب شر وضع VIM. ومع ذلك ، قد يكون أو لا يكون مناسبًا لك منذ أن أشارت إلى المحيط.

يبدو أن الشر الحار يدعم معظم الميزات في المحيط.

لا أعتقد أن هناك أي شيء مدمج للعلامات ، ولكن بالنسبة للباريس يمكنك القيام به m- (m- (. بالنسبة للأقواس/الأقواس/الاقتباسات التي يمكنك القيام بها:

(global-set-key (kbd "M-[") 'insert-pair)
(global-set-key (kbd "M-{") 'insert-pair)
(global-set-key (kbd "M-\"") 'insert-pair)

لاحظ أنه إذا لم يكن لديك منطقة مميزة ، فستقوم فقط بإدخال زوج من Whatevers ووضع المؤشر بينهما. مفيد أيضًا لحذف المطابقة

(global-set-key (kbd "M-)") 'delete-pair)

إذا كنت ترغب في إدراج أزواج العلامات ، فهي بعض ELISP البسيطة:

(defun my-insert-tags (tag)
  (interactive "sTag: ")
  (if (region-active-p)
      (let ((beg (region-beginning)))
        (save-excursion
          (goto-char (region-end))
          (insert "</" tag ">")
          (goto-char beg)
          (insert "<" tag ">")))
    (insert "<" tag ">")
    (save-excursion
      (insert "</" tag ">"))))

لا أعرف أي طريقة للقيام بذلك في emacs ، ولا حتى مع وحدة نمطية.

إن My Elisp صدأ بعض الشيء ، وشراء هنا وظيفة بسيطة ستحيط المنطقة الحالية (نص ملحوظ) أو كلمة مع عروض الأسعار ("):

(defun insert-quotes ()
  "Inserts quotes (\") around the current region or work."
  (interactive)
  (let (start end bounds)
    (if (and transient-mark-mode mark-active)
        (setq start (region-beginning) 
              end (region-end))
      (progn
        (setq bounds (bounds-of-thing-at-point 'symbol))
        (setq start (car bounds) 
              end (cdr bounds))))
    (goto-char start)
    (insert "\"")
    (goto-char (+ end 1))
    (insert "\"")))

نعم ، هناك استنساخ من المحيط. http://github.com/timcharper/vimpulse-surround.el

إنه يتطلب Vimpulse ، والذي يتطلب vim. إنه ينفذ الكثير من وظائف محيط.

يمكن الشر الحار هو ما تبحث عنه.

شكرًا.

هل تريد اختيار منطقة أو ما شابه ذلك ، ثم تصنع مربعًا حولها مثلما تفعل أوضاع مختلفة للتعليقات؟ أعتقد أن emacs-wiki (http://www.emacswiki.org/) لديه بعض الفن ASCII-Line (وأداة FIGELT أيضًا) سيفعل ذلك. البحث عن مربع ، تماما ، فن الخط ...

############################
#                           #
# I AM REGION, WE ARE  MANY #
#                           #
############################
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top