Ersetzen Sie ein Zeichen bei der Eingabe durch eine Zeichenfolge
Ich möchte folgendes tun: Aktivieren Sie einen Modus, so dass, wenn ich das $Zeichen in meinen Puffer eingebe, es sofort durch ersetzt wird <m>.
Noch besser: Wenn ich $tippe, wird <m></m>der Cursor zwischen das passende Tag-Paar gesetzt und platziert.
Ich habe kein Problem damit, dass die Lösung schnell und schmutzig ist, aber ich müsste in der Lage sein, sie ein- und auszuschalten.
Kontext: Ich habe angefangen, PreTeXt zu verwenden , was im Grunde "LaTeX meets XML" ist, um einen mathematischen Text zu schreiben. Es funktioniert sehr gut, aber die ganze Zeit tippen zu müssen, <m>schadet meiner Produktivität (ich genieße es schon c-C ], die Tags zu schließen.)
Antworten
Dies kann im abbrev-Modus erfolgen:
;; 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))))
Der obige Codeblock kann in Ihre emacsInit-Datei kopiert und eingefügt werden.
Für fortgeschrittenere Vorlagen können Sie sich Folgendes ansehen: yasnippets .