изменение роли подчеркивания и знака минус только в LateX-режиме


12

При работе с текс-файлами с помощью auctex + emacs (режим LateX) я чаще использую _ (подчеркивание) вместо - (знак минус). Так же, как ^ вместо 6. Неудобство заключается в том, что я должен чаще нажимать клавишу Shift.

Было бы желательно настроить emacs таким образом, чтобы, когда emacs находится в режиме LateX ( и только в этом режиме ), когда я печатаю - типы emacs _ и когда я печатаю _ типы emacs -. то есть следующие сочетания клавиш:

- дает _

_ дает -

6 т ^

^ дает 6

Является ли это возможным?

Ответы:


16

Что-то вроде этого:

(add-hook 'LaTeX-mode-hook 'my-latex-hook)

(defun my-latex-hook ()
  (require 'tex-site)
  (define-key LaTeX-mode-map "-" (lambda () (interactive) (insert "_")))
  (define-key LaTeX-mode-map "_" (lambda () (interactive) (insert "-")))
  (define-key LaTeX-mode-map "6" (lambda () (interactive) (insert "^")))
  (define-key LaTeX-mode-map "^" (lambda () (interactive) (insert "6"))))

замечательно, твой код отлично работает.
Имя

1
(define-key LaTeX-mode-map "-" "_")и так далее должно быть достаточно ( "_"интерпретируется как макрос клавиатуры), плюс это работает с TeX-electric-sub-and-superscript.
Константин

1
Нет, @ Константин. То, что вы предлагаете, вызовет рекурсию.
abo-abo

О верно. Это происходит, если _и -сопоставлены друг с другом.
Константин
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.