Подтвердить что ты не робот

Есть ли расширение или режим в Emacs, похожий на surround.vim?

Surround.vim - отличное расширение vim, которое позволяет вам окружать блоки текста, скобки, фигурные скобки и почти любые произвольные "окружающего". Он поддерживает абзац и слово surround, но я часто использую его в визуальном режиме. Я играю с Emacs и задаюсь вопросом, есть ли что-то подобное; то, что позволит мне выделить область, а затем иметь отмеченную область (или прямоугольник), заключенную в фигурные скобки, скобки или теги.

4b9b3361

Ответ 1

Возможно, wrap-region - это то, что вам нужно.

smartparens - еще один отличный вариант, если нужно обернуть что-то разделителями, тегами и т.д.

Ответ 2

Я использую evil-surround. Он эмулирует поведение vim, но, к сожалению, может быть не то, что хочет большинство пользователей emacs, так как для него требуется evil vim. Тем не менее, это может быть или не быть правильным для вас, поскольку вы ссылаетесь на surround.vim в первую очередь.

evil-surround, похоже, поддерживает большинство функций Surround.vim, включая изменение окружения.

Ответ 3

Я не думаю, что для тегов есть что-то, но для парнеров вы можете сделать M-(. Для скобок/фигурных скобок/кавычек вы можете сделать:

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

Обратите внимание, что если у вас нет выделенного региона, он просто вставляет пару ударов и помещает курсор между ними. Кроме того, удобно для удаления совпадающих символов:

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

Ответ 4

Не знаю, как это сделать в Emacs, даже с модулем.

Мой 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 "\"")))

Ответ 5

Да, есть клоун surround.vim, по состоянию на 1 неделю назад: http://github.com/timcharper/vimpulse-surround.el

Он требует vimpulse, который требует vim. Он реализует большую часть функций surround.vim.

Ответ 6

возможно evil-surround - это то, что вы ищете.

спасибо.

Ответ 7

Итак, вы хотите выбрать регион или подобное, а затем создать поле вокруг него, как это делают различные режимы для комментариев? Я полагаю, что emacs-wiki (http://www.emacswiki.org/) имеет некоторое искусство ascii-line (и инструмент фигурки), который будет делать это. Поиск в поле, вполне, линейное искусство...

############################
#                           #
# I AM REGION, WE ARE  MANY #
#                           #
############################