Surround.vim является изящным расширением энергии, которое позволяет Вам окружать блоки текста с, скобки, фигурные скобки, и в значительной степени любой произвольный "окружает" символ. Это поддерживает абзац, и слово окружают, но я часто использую его в визуальном режиме. Я играю вокруг с Emacs и задаюсь вопросом, существует ли что-то подобное; что-то, что позволит мне выделить регион и затем иметь отмеченный регион (или прямоугольник) включенный с фигурными скобками, скобками или тегами.
Возможно, wrap-region - это то, что вам нужно.
smartparens - еще один отличный вариант, если нужно обернуть что-то разделителями, тегами и т. Д.
То есть вы хотите выделить регион или что-то подобное, а затем сделать вокруг него рамку, как это делают различные режимы для комментариев? Я считаю, что в emacs-wiki (http://www.emacswiki.org/) есть несколько инструментов для создания строк ascii-линии (а также инструмент figlet), которые могут это сделать. Поиск по box, quite, line art ...
############################
# #
# I AM REGION, WE ARE MANY #
# #
############################
Не знаю ни одного способа сделать это в 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 "\"")))
Я не думаю, что есть что-то встроенное для тегов, но для паренсов вы можете сделать 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 ">"))))
Да, есть клон Surround.vim, по состоянию на 1 неделю назад: http://github.com/timcharper/vimpulse-surround.el
Требуется vimpulse, который требует vim. Он реализует большую часть функциональности Surround.vim.