해결책
또한 있습니다 'paredit
. 그만큼 컨닝 지 사용 가능한 모든 명령을 보여줍니다. 다른 답변에서 제안 된 전기 모드보다 더 좋아합니다. 페더 디지는 ()에만 적용되지만, 당신의 요구를 저를 나에게 적용 할 수는 없습니다.
그러나 솔직히 말해서 괄호 주변의 패키지가 많이 있습니다. 위키에는 그들 모두가 있습니다 여기에 나열되어 있습니다. 귀하의 질문을 다루는 모드는 다음과 같습니다.
다른 팁
예, 이 모드를 전기라고합니다. 이 간단한 매크로와 전기 거동을 결합하여 최대의 모습을 제공 할 수 있습니다.
(defun electric-pair ()
"If at end of line, insert character pair without surrounding spaces.
Otherwise, just insert the typed character."
(interactive)
(if (eolp) (let (parens-require-spaces) (insert-pair))
(self-insert-command 1)))
그런 다음 좋아하는 프로그래밍 모드에서 적절한 문자를 바인딩하여 활성화하십시오. 예를 들어, PythonMode의 경우 :
(add-hook 'python-mode-hook
(lambda ()
(define-key python-mode-map "\"" 'electric-pair)
(define-key python-mode-map "\'" 'electric-pair)
(define-key python-mode-map "(" 'electric-pair)
(define-key python-mode-map "[" 'electric-pair)
(define-key python-mode-map "{" 'electric-pair)))
CPERL 모드는 이것을 내장으로 제공합니다.
;; from my .emacs
(add-hook 'cperl-mode-hook
(lambda ()
(setq cperl-hairy nil
abbrev-mode t ;; automatic keyword expansion
cperl-highlight-variables-indiscriminately t
cperl-auto-newline t
cperl-auto-newline-after-colon t
cperl-regexp-scan nil
cperl-electric-keywords t
cperl-electric-linefeed t
cperl-electric-parens nil) ;; <------ electric parens!
다른 모드는 비슷한 것을 제공 할 수 있습니다.
CMARCELO가 있습니다 이것에 대한 멋진 게시물을 썼습니다 골격 모드 사용. 또한 오프닝 브래킷을 삭제하면 균형 잡힌 브래킷을 제거하는 방법과 실수로 닫는 브래킷을 입력하는 경우를 처리하는 방법을 보여줍니다. (우연히 두 행동은 텍스트 메이트를 복사합니다).
업데이트:
이 답변을 게시 한 이후로 발견했습니다 autopair 이 사용 사례에 대한 완벽한 시스템입니다. 나는 그것을 많이 사용하고 그것을 좋아했습니다.
나는이 스레드를 Necro하고 다른 대안을 제공 할 것입니다. 최근에 시작된 새로운 프로젝트가 있습니다. 쌍의 자동 변환, 지역 포장, 균형 잡힌 표현을 중심으로 내비게이션 등을 다루는 새로운 프로젝트가 있습니다. 기능 목록이 여기에 제공하기에는 너무 길어서 SmartParens Github Repo 자세한 readme를 읽을 수있는 곳.
그것은 앞서 언급 한 AutoPAir의 대체 세트이며, Paredit의 대부분의 핵심 특징을 제공합니다 (및 EMACS Syntax-Tables에 의해 인식 된 것뿐만 아니라 모든 종류의 다른 쌍으로 확장).