Actuellement, j'insère des caractères Unicode (principalement des symboles mathématiques) en utilisant la méthode d'entrée TeX. C'est lourd, car pour chaque personnage, je dois faire ce qui suit:
- Passer à la méthode de saisie TeX en appuyant sur
C-\
- expression de type latex comme
\Bbb{R}
ou\Leftrightarrow
Il y a un sous-ensemble relativement petit de caractères Unicode (10-20) que j'insère tout le temps.
Q: Existe - t-il un moyen d'insérer des caractères Unicode avec quelques (2-4) touches?
Réponses:
Vous pouvez utiliser
abbrev-mode
pour créer des chaînes qui "s'étendent" aux caractères Unicode souhaités. Par exemple, leabbrev
tableau suivant définit les abréviations des trois premières lettres minuscules de l'alphabet grec:Vous pouvez ensuite dire
text-mode
(ou tout autre mode que vous souhaitez) d'hériter de votre table unicode:Accédez à un tampon en mode texte. Allumez
abbrev-mode
. Tapezualpha
et un caractère non-mot (espace, point, etc.) et regardez-le se développer en α.la source
Vous pouvez définir vos propres séquences de touches avec les fonctions elisp
global-set-key
etlocal-set-key
. Ainsi, il est recommandé d'utiliser C-cet une seule lettre pour les séquences de touches définies par l'utilisateur. (Sinon, il se peut que vous remplaciez des séquences de clés liées par d'autres bibliothèques emacs-lisp. Plus tard, vous rencontrez des problèmes lorsque vous découvrez que la version de bibliothèque de la séquence de touches vous serait très utile.)Si vous souhaitez utiliser ces séquences indépendamment du mode principal, vous pouvez les lier globalement.
Pour un exemple, vous pouvez ajouter
(global-set-key (kbd "C-c a") "⇔")
à votre fichier de configuration
~/.emacs
.Alternativement, vous pouvez utiliser ces touches en fonction du mode principal.
Un exemple est:
Cela fonctionne avec
auctex
. Si vous utilisez le natiftex-mode
oulatex-mode
il se peut que vous deviez le remplacerTeX-mode-hook
partex-mode-hook
.Notez qu'il est également
insert-char
lié à C-x 8 RET. Ainsi, vous pouvez saisir des caractères utf8 si vous connaissez leur code. Si vous ne connaissez pas le code, vous pouvez les saisir par leur description mais cela devient lourd.Il existe également des modes spéciaux prenant en charge l'utilisateur avec l'entrée de symboles en latex, tels que
company-math
-Mode etac-math
-mode .Les deux sont des modes d'achèvement.
company
fonctionne avec les menus de la souris etac
(saisie semi-automatique) fonctionne avec la tabtouche.Mais je ne suis pas sûr de l'état actuel de ces packages. Vous pouvez installer ces modes par melpa si vous souhaitez les essayer.
la source
C-c
est que vous pouvez être sûr qu'elle n'entrera pas en conflit avec les liaisons de touches fournies par Emacs ou une bibliothèque que vous pourriez utiliser.Vous dites: Il y a un sous-ensemble relativement petit de caractères Unicode (je suppose 10-20) que j'insère tout le temps.
Dans ce cas, comme @Tobias l'a indiqué, vous pouvez simplement lier, pour chacun d'eux, une simple séquence de touches à (a) une commande qui insère ce caractère ou (b) une chaîne de caractères unique avec ce caractère (cela agit comme une macro clavier, pour insérer le caractère).
La bibliothèque
ucs-cmds.el
peut vous aider à définir de telles commandes. Les commandes résultantes ont les mêmes noms que les caractères. Vous pouvez utiliser une macroucsc-make-commands
pour définir un ensemble complet de commandes qui insèrent un caractère d'un certain type.Par exemple, vous pouvez mettre ceci dans votre fichier init pour définir des commandes qui insèrent tous les symboles mathématiques Unicode:
Cela vous donne des commandes dont les noms sont les mêmes que les caractères mathématiques. Liez n'importe lequel d'entre eux que vous utilisez beaucoup à des touches faciles à utiliser. Par exemple:
(Ou liez une clé à une telle commande uniquement en mode Tex, en utilisant
define-key
avec son clavier.)Avec aussi simple que cela,
(ucsc-make-commands "^math")
vous disposez de toutes les commandes d'insertion de caractères répertoriées ci-dessous.Il existe également d'autres caractères Unicode, dont les noms ne commencent pas par
math
mais qui sont utilisés en mathématiques - par exemple, caractèrePARTIAL DIFFERENTIAL
. Vous pouvez facilement créer des commandes qui insèrent également l'un de ces caractères. (Et notez que les caractères dont les noms commencent parmath
pourraient bien nécessiter l'utilisation d'une police spéciale - de nombreuses polices ne les prennent pas en charge.)Vous pouvez bien sûr utiliser une expression régulière plus stricte que
^math
si vous souhaitez définir uniquement des caractères correspondant à un tel modèle. Par exemple, cela définit les commandes pour tous les caractères différentiels partiels:Cela vous donne ces commandes:
Notez que les noms de caractères Unicode séparent les mots par des espaces et que les noms sont en majuscules. Les commandes d'insertion correspondantes utilisent des tirets au lieu d'espaces et des minuscules au lieu de majuscules.
Un avantage d'avoir des commandes nommées d'après les caractères qu'ils insèrent, au lieu, disons, de simplement lier des clés aux chaînes singleton des caractères, est que vous pouvez utiliser
M-x
pour entrer des caractères que vous utilisez moins souvent, par nom en utilisant la complétion. Au lieu de compléter par rapport à l'ensemble complet des noms de caractères Unicode, vous complétez par les noms des commandes d'insertion de caractères que vous avez définies.Ce sont les commandes qui insèrent des caractères dont les noms commencent par
math
. C'est ce que vous obtenez en évaluant(ucsc-make-commands "^math")
....
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
la source