입력 할 때 문자를 문자열로 교체
Aug 20 2020
다음을 수행하고 싶습니다. 일부 모드를 활성화하여 $버퍼에 문자를 입력하면 즉시 <m>.
더 좋은 점 : 입력 $할 때 <m></m>일치하는 태그 쌍 사이에 커서를 놓고 배치합니다.
솔루션이 빠르고 더러워지면 문제가 없지만 켜고 끌 수 있어야합니다.
컨텍스트 : 내가 사용하기 시작했습니다 구실 수학 텍스트를 작성, 기본적으로 "라텍스 XML을 충족". 매우 잘 작동하지만 <m>항상 타이핑을 해야 생산성이 저하됩니다 (이미 c-C ]태그를 닫는 것을 즐기고 있습니다).
답변
1 ideasman42 Aug 20 2020 at 11:56
이것은 약어 모드를 사용하여 수행 할 수 있습니다.
;; Hook to go back N chars after completion.
(defun my-abbrev-back-4-no-self-insert ()
(progn
(forward-char -4)
t))
(put 'my-abbrev-back-4-no-self-insert 'no-self-insert t)
(define-abbrev-table
'global-abbrev-table
(list
(list "$" "<m></m>" 'my-abbrev-back-4-no-self-insert 0)
;; More typical examples of abbrev mode usage.
(list "btw" "by the way" nil 3)
(list "pov" "point of view" nil 1)))
;; Enable abbrev mode.
(add-hook 'after-change-major-mode-hook
(lambda ()
(when (or (derived-mode-p 'prog-mode)
(derived-mode-p 'text-mode))
(abbrev-mode 1))))
위의 코드 블록은 emacs초기화 파일에 복사하여 붙여 넣을 수 있습니다 .
고급 템플릿을 보려면 yasnippets 를 살펴보세요 .