Quelle est la manière la plus simple d'insérer des caractères Unicode dans un document?

28

Lorsque j'écris des documents de temps en temps, je souhaite insérer des caractères Unicode dans le texte. Parfois, je connais le code du personnage et parfois je le recherche sur le Web.

Actuellement, je passe en mode insertion puis j'utilise <Ctrl-V>u{four digit hex number}, ce qui peut être très laborieux. Existe-t-il un moyen plus simple d'insérer les caractères (peut-être une forme de collage)?

Martin York
la source
L'autre question est vraiment un "cas spécial" de cette question plus générique; les réponses seront les mêmes ... Mon commentaire ici s'applique également: utilisez les installations de votre système d'exploitation (quelles qu'elles soient), ou un autre programme à l'échelle du système d'exploitation (par exemple lorsque j'utilisais Windows, j'aimais utiliser AllChars qui émule les X11) Composez la clé; cela fonctionne dans tous les programmes).
Martin Tournoij
Oui, c'est un cas spécial et les réponses sont spécialisées pour cela. Ne pensez-vous pas qu'il pourrait y avoir une solution plus généralisée qui englobe plus de choses que les gens n'ont pas envisagées lors de l'examen du cas spécial.
Martin York
Nous pourrions également rendre cette question plus générique, ou marquer celle-ci comme une dupe de celle-ci (même si elle était antérieure); Je ne me soucie pas vraiment en tant que tel . Mais je ne pense pas qu'avoir les deux questions telles
quelles
Si je pouvais contrôler le monde. Peut-être devrions-nous le laisser reposer un jour ou deux, donc s'il recueillait des réponses uniques qui pourraient le distinguer de l'autre question. S'il reste sans réponse ou si les réponses ne sont que des doublons, fermez / supprimez-le.
Martin York
Très bien .. Je suis définitivement d'accord que l'autre question n'a pas d' excellentes réponses, et cette question devrait en attirer de meilleures (espérons-le) ... La modification de l'autre question (pour la rendre plus générique) la laisse encore avec un tas de votes très positifs réponses qui ne concernent que le tiret em, donc ce n'est pas génial non plus ... J'ai donc rétracté mon vote serré, et dès que cela obtiendra des réponses décentes, je voterai pour l'autre un dupe de celui-ci (même si c'était plus tôt) ... Je ne peux bien sûr pas contrôler ce que les autres choisissent de voter.
Martin Tournoij

Réponses:

23

Préface : Cela n'a rien à voir avec Vim en tant que tel, mais je vais vous montrer ce que je considère être la "meilleure" façon d'insérer ces caractères de loin; Le système de digraphe de Vim est plus ou moins le même, mais il ne fonctionne qu'avec Vim. Cela fonctionnera dans toutes les applications.

Cela ne fonctionnera que pour les systèmes X11 (Linux, BSD, etc.). Pour Windows, il y a AllChars . Il n'a pas été mis à jour depuis un certain temps, mais je peux confirmer qu'il fonctionne bien avec Windows 7 (utilisé lors de mon travail précédent). Je crois que OS X dispose également de bonnes installations pour ce faire intégré dans le système d'exploitation; si vous utilisez OS X, je vous encourage à les vérifier, mais comme je n'ai jamais vraiment utilisé OS XI, je ne peux pas vous les indiquer.

Ce qui suit est (partie de) un projet d'article de blog que j'ai en préparation. Malheureusement, un guide vraiment complet n'existe pas (encore), et ce qui suit ne décrit pas toutes les fonctionnalités qu'il offre (par exemple, certaines parties sur les touches mortes sont manquantes) et pourrait être mieux écrit dans certaines parties, mais je pense que c'est toujours "assez utile".


Une «séquence de composition» consiste à appuyer sur la Composetouche, puis sur un ou plusieurs caractères pour produire un caractère introuvable sur votre clavier, par exemple, appuyer sur Compose, immédiatement suivi par "et apourrait produire un ä.

Par défaut, Composen'est lié à aucune clé 1 ; la Alttouche Droite (aka. Alt Gr) est souvent utilisée, mais vous la définissez sur la touche de votre choix.

Réglez-le à l'aide de xmodmap

Vous pouvez utiliser xmodmap pour définir ceci:

$ xmodmap -e 'keysym Alt_R = Multi_key'     # Set it right Alt
$ xmodmap -e 'keysym Caps_Lock = Multi_key' # Set it to Caps Lock
$ xmodmap -e 'keysym F12 = Multi_key'       # You're free to use *any* key, like F12

Vous voudrez probablement l'ajouter à votre ~/.Xmodmapfichier 2 :

! Set compose key
keysym Alt_R = Multi_key

Réglez-le à l'aide de XKB

Vous pouvez également définir la clé de composition en option sur XKB avec setxkbmap:

setxkbmap -option compose:ralt  # Right alt
setxkbmap -option compose:caps  # Caps Lock

Pour les rendre permanents, ajoutez la commande à votre fichier de démarrage X, ou vous pouvez également la définir dans /etc/X11/xorg.conf:

Section "InputDevice"
    Identifier "Keyboard0"
    Driver "kbd"
    Option "XkbOptions" "compose:ralt"
    #Option "XkbOptions" "compose:caps"
EndSection

Ou, dans un style plus «moderne», vous pouvez créer un fichier /etc/X11/xorg.conf.d/90-compose.conf:

Section "InputClass"
    Identifier "Set compose key"
    MatchIsKeyboard "on"
    Option "XkbOptions" "compose:ralt"
EndSection

Une liste des valeurs possibles se trouve dans la xkeyboard-config(7)section 'Position de la touche de composition' 3 .

Configuration des clés mortes

Une touche morte est principalement utilisée pour ajouter un accent ou un signe diacritique à une lettre (comme le tréma, l'accent grave, etc.), bien qu'elle puisse être utilisée pour créer n'importe quel caractère. Il fonctionne par ... TODO '

keycode 133 = dead_greek NoSymbol SuperR

http://zuttobenkyou.wordpress.com/2011/08/24/xorg-using-the-us-international-altgr-intl-variant-keyboard-layout/
http://stackoverflow.com/questions/14922007/how-to-enter-greek-alpha-under-xor
keycode 48 = dead_grave apostrophe


<dead_grave> <space>       : "`"   grave # GRAVE ACCENT
<dead_grave> <dead_grave>  : "`"   grave # GRAVE ACCENT
<dead_grave> <a>           : "À"   agrave # LATIN CAPITAL LETTER A WITH GRAVE

Création d'un fichier ~ / .XCompose

Le fichier de composition par défaut ~/.XComposeest manquant /usr/share/X11/locale/$LANG/Compose. Le fait d'avoir la vôtre ~/.XComposeremplace la valeur par défaut, mais vous pouvez toujours inclure la valeur par défaut avec:

include "%L"

Les modifications apportées à tout fichier de composition prennent effet lorsque vous redémarrez une application. Vous n'avez pas besoin de redémarrer X.

Composer la clé

Une «séquence de composition» consiste à appuyer sur la Composetouche puis sur un ou plusieurs caractères pour produire un caractère, par exemple:

<Multi_key> <quotedbl> <a> : "ä" adiaeresis

Signifie que presser Compose, immédiatement suivi "et aproduit un ä.

<Multi_key>indique que nous utilisons la Composeclé. nous suivons ensuite cela par une liste d'une ou plusieurs clés, celles-ci doivent être keysyms, qui sont des représentations symboliques des clés utilisées par X (voir la section Keysymes).

Suivi d'un :, suivi du résultat.

Le résultat:

<Multi_key> <a>          :  "ä" adiaeresis
<Multi_key> <b> <b>      :  "ä" adiaeresis
<Multi_key> <c> <c> <c>  :  "ä" adiaeresis
<Multi_key> Alt <d>      :  "ä" adiaeresis
<Multi_key> Ctrl <e>     :  "ä" adiaeresis

Remarque : Un fichier de composition est sensible à la casse et An'est donc pas identique à a.

Clés mortes

FAIRE

Faites-le fonctionner dans GTK & Qt

Définissez les variables d'environnement GTK_IM_MODULE& QT_IM_MODULEsur xim.

Coquille Bourne:

# Make compose key work for GTK, Qt
export GTK_IM_MODULE=xim
export QT_IM_MODULE=xim

Coque C:

# Make compose key work for GTK, Qt
setenv GTK_IM_MODULE xim
setenv QT_IM_MODULE xim

Voir également

ma ~/.XCompose

C'est le ~/.XComposeque j'utilise ; J'ai utilisé un script pour le générer, mais je l'ai accidentellement écrasé lors de sa compilation> _ <J'ai donc besoin de le réécrire.

Prenez également note de cette ligne:

<Multi_key> <i> <b> : "NL65AEGO0721647952"

Appuyez sur Compose ibpour insérer cette chaîne (un numéro IBAN de test aléatoire); très utile pour tester des applications où un tel nombre est requis pour créer un objet (Personne, Organisation); XCompose peut également servir d'outil "d'extrait" :-)

Notes de bas de page

1: Certains claviers UNIX avaient une Composeclé dédiée ( comme ce SUN ), mais c'est assez rare de nos jours.

2: Selon votre configuration existante, cela peut ou non être lu au démarrage, selon votre configuration, ajoutez la ligne xmodmap ~/.Xmodmapà ~/.xinitrcou ~/.xsession; voir également le wiki ArchLinux .

3: Reproduit pour votre bénéfice:

    Position of Compose key
    +------------------------------------------------------+
    |Option                Description                     |
    +------------------------------------------------------+
    |compose:ralt          Right Alt                       |
    |compose:lwin          Left Win                        |
    |compose:lwin-altgr    3rd level of Left Win           |
    |compose:rwin          Right Win                       |
    |compose:rwin-altgr    3rd level of Right Win          |
    |compose:menu          Menu                            |
    |compose:menu-altgr    3rd level of Menu               |
    |compose:lctrl         Left Ctrl                       |
    |compose:lctrl-altgr   3rd level of Left Ctrl          |
    |compose:rctrl         Right Ctrl                      |
    |compose:rctrl-altgr   3rd level of Right Ctrl         |
    |compose:caps          Caps Lock                       |
    |compose:caps-altgr    3rd level of Caps Lock          |
    |compose:102           <Less/Greater>                  |
    |compose:102-altgr     3rd level of <Less/Greater>     |
    |compose:paus          Pause                           |
    |compose:prsc          PrtSc                           |
    |compose:sclk          Scroll Lock                     |
    +------------------------------------------------------+
Martin Tournoij
la source
1
Pour Windows, utilisez Wincompose au lieu d'Allchars. Il fait exactement ce qu'il dit sur l'étain. J'ai utilisé Allchars jusqu'à ce que je trouve Wincompose. La limitation de la composition est que vous ne pouvez pas avoir une combinaison mémorable pour atteindre tous les personnages, seulement ceux que vous utilisez souvent ou qui ont une décomposition logique.
Gilles 'SO- arrête d'être méchant'
@Gilles Merci; WinCompose a l'air sympa. Vous avez raison, vous ne pouvez saisir qu'un sous-ensemble assez limité de caractères "les plus utilisés". Pour moi, cela suffit> 95% du temps. Pour le reste, j'utilise UniView ... Je ne suis pas au courant de quoi que ce soit de bien mieux ...
Martin Tournoij
Pour les caractères rarement utilisés, j'utilise Shapecatcher (pas d'intégration d'éditeur à ma connaissance) ou je tape le nom du personnage ( C-x 8 RETdans un éditeur qui n'est pas vi, je ne sais pas si Vim a quelque chose de similaire).
Gilles 'SO- arrête d'être méchant'
1
Les utilisateurs de KDE ne peuvent pas utiliser cette méthode car KDE relègue la responsabilité de l'implémentation de cette fonctionnalité à Xorg , et Xorg relègue à Qt , et Qt relègue à Xorg . J'en discute sur ma page sur la saisie de texte RTL .
dotancohen
@dotancohen Cela ressemble à un problème différent (comme dans, demande de fonctionnalité).
Martin Tournoij
20

Pour insérer des caractères Unicode tels que l'euro ou des symboles de copyright, ou des signes diacritiques tels que le tréma allemand ou la tombe d'accent, digraphspeuvent être utilisés.

Par exemple, en mode insertion, appuyez sur Ctrl+ ket tapez ce qui suit:

  • Espagnol: a'pour á, E'pour É, n?pour ñ,
  • Allemand: a:pour ä, sspour ß,
  • autres lettres accentuées: a!pour à, a>pour âpour ê, a?pour ã,
  • Grec: a*pour α(alpha), b*pour β(beta), g*pour γ(gamma), d*pour δ(delta).
  • nombres carrés: 22pour ², 33ou³
  • devises: Eupour (Euro), Pdpour £(Livre),
  • Copour ©(Copyright), DGpour °(Degré),
  • OKpour , XXpour , Sbpour (puce),
  • signes de ponctuation: -Npour (en tiret), -Mpour (em tiret)

Lorsque l'option digraph est définie ( :set dg), vous pouvez également utiliser la méthode suivante:

  • aBackspace:pour ä, EBackspaceupour , etc.

Pour lister les digraphes actuellement définis, tapez: :digraphs( :dig).

Source: Saisie de caractères spéciaux sur le site Vim Wikia .


OS X

Si vous utilisez OS X, il est très facile de taper des lettres accentuées n'importe où par la méthode suivante:

  • Option+ e, puis apour á, epour é, ipour íet similaire,
  • Option+ n, puis apour ã, npour ñet similaire,
  • Option+ u, puis upour ü,
  • signes de ponctuation à l'envers: Option+ 1pour ¡, Option+ Shift+ ?pour ¿,

Voir également:

kenorb
la source
6

Mon plugin unicode permet de saisir facilement des caractères unicode. Plus précisément, il permet

  • :Digraph <name> - Rechercher des digraphes pour le caractère

  • :UnicodeTable - Affiche une table de jeu de caractères

  • :UnicodeName - Identifier le personnage sous le curseur

  • Compléter les caractères en utilisant leurs noms ou valeurs de la table unicode ( :h i_CTRL-X_CTRL-Z) ou des digarphes ( :h i_CTRL-X_CTRL_G)

Lisez l'aide pour plus d'informations sur l'utilisation de mon plugin.

Christian Brabandt
la source
3

En plus d'utiliser les digraphes prédéfinis (Exécuter :digpour obtenir une liste), vous pouvez également définir vos propres digraphes dans vim:

:digr e: 235 a: 228

Voir également: http://vimdoc.sourceforge.net/htmldoc/digraph.html

Hjulle
la source
3

Pour les caractères couramment utilisés, :digraphou les moyens externes tels que la touche Composer mentionnée sont excellents. Pour ceux rarement utilisés, je définis des abréviations, comme ceci:

norea <unique> unicode_smiley 😃
norea <unique> unicode_skull ☠

Et puis utilisez mon plugin SnippetComplete pour obtenir un menu contextuel qui répertorie toutes ces abréviations, par exemple:unicode_<C-x>]

Ingo Karkat
la source