В Textmate я могу обернуть окружающие символы ('(', '[', '"' и т. д.) вокруг текста, выбрав его и нажав открывающий символ. Например, если я выберу word и нажму (, он станет (word). Как Emacs называет эту функцию и как ее включить?
Обтекание выделенного текста окружающими символами в Emacs
Ответы (9)
Для скобок вы можете использовать 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)
ИЗМЕНИТЬ:
Хороший момент в комментариях о переопределении backward-paragraph. Вы можете привязать его к C-{, что может мешать чему-то в основном режиме. insert-pair берет последний ключ и ищет, какую пару вставить, поэтому, если вы не хотите привязывать его к something-{, вместо этого вы можете привязать его к этой функции:
(defun my-insert-braces ()
(interactive)
(if (region-active-p)
(insert-pair 1 ?{ ?})
(insert "{}")
(backward-char)))
M-{ больше нельзя использовать для обратного абзаца =)
- person hekevintran; 01.06.2010
(global-set-key (kbd "M-[") 'insert-pair), то emacs вставляет мусор escape-символа всякий раз, когда я выполняю действие мыши (но это только в случае 'M-[')
- person rien333; 09.09.2017
Я использую http://www.emacswiki.org/emacs/ParEdit. М-( делает именно это.
Начиная с Emacs 24.1 (выпущен в 2012-06 гг.).
Поместите это в свой emacs init: (electric-pair-mode 1).
Теперь, если вы выберете слово и нажмете (, оно станет (слово). То же самое для ", [, { и т. д.
Я бы также посмотрел на скелетный режим http://ggorjan.blogspot.com/2007/05/skeleton-pair-mode-in-emacs.html
Это очень гибко, особенно для скобок.
Есть textmate-режим.
Из Emacswiki:
См. textmate-mode для попытки иметь поведение TextMate для скобок и кавычек (автоматическое закрытие, перезапись, интеллектуальное удаление).
http://code.google.com/p/emacs-textmate/
Теперь также есть Corral. Его поведение «делай то, что я имею в виду» делает этот процесс намного быстрее, чем ручной выбор текста и нажатие клавиши.
(отказ от ответственности: я автор)
Если вы используете smartparens, просто выберите текст, а затем введите пару. Вики Smartparens: упаковка