В Textmate я могу перенести символы включения (' (', '[', '"', и т.д.) вокруг текста путем выбора его и удара вводного символа. Например, если я выбираю word
и хит (
, это станет (word)
. Что Emacs называет этой функцией и как я включаю его?
Для скобок вы можете использовать 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)
РЕДАКТИРОВАТЬ:
Хороший момент в комментариях о переопределении обратного абзаца
. привяжите его к C - {, что может помешать чему-то в основном режиме. insert-pair
берет последний ключ и выполняет поиск, чтобы увидеть, какую пару вставить, поэтому, если вы не хотите привязывать его к чему-то - { вместо этого вы можете привязать к этой функции:
(defun my-insert-braces ()
(interactive)
(if (region-active-p)
(insert-pair 1 ?{ ?})
(insert "{}")
(backward-char)))
Я использую http://www.emacswiki.org/emacs/ParEdit . М- (делает именно это.
Я бы посмотрел также на скелетный режим http://ggorjan.blogspot.com/2007/05/skeleton-pair-mode-in-emacs.html
Он очень гибкий, особенно для круглых скобок.
Есть textmate-mode.
Из Emacswiki:
См. Textmate-mode для попытки использования поведения TextMate для скобок и кавычек (автоматическое закрытие, перезапись, интеллектуальное удаление).