J'ai parfois besoin d'écrire des mots grecs, mais lorsque j'utilise le clavier grec, frapper, par exemple, <C-p>
sera compris comme <C-π>
et non comme la commande que j'ai l'intention. Cela peut être corrigé avec :map <C-p> <C-π>
. Puis-je faire cela pour toutes les lettres sans faire une liste de toutes?
PS. Faire une liste de tous ne produit pas un résultat parfait. Par exemple, q
est ;
sur le Gr. clavier, mais nous ne voulons pas mapper; à q. De plus, pour une raison quelconque, ΖΖ (zeta zeta) ne fonctionne pas après :map Ζ Z
. Et une commande que j'ai définie \lw
, ne fonctionne pas comme \λς
.
key-bindings
keyboard-layout
Toothrot
la source
la source
langmap
option (voir le document qui comprend un exemple de mise en page grecque). Cette option a été faite pour aider à gérer les claviers non latins comme le grec ou le cyrilique. Il vous permet de définir des paires de symboles qui seront interprétées normalement en mode insertion mais seront remplacées dans d'autres modes, peut-être que cela vous aidera.:echo has('langmap')
si vous en avez un1
si vous en avez un0
.brew install vim --override-system-vi
et:echo has &c
retourne maintenant 1. ZZ fonctionne. Le problème avec\lv
& c persiste.:echo has &c
partie, je ne vois pas à quoi elle est liéelangmap
aussi une fois que vous avez compilé vim,langmap
vous devez spécifier les mappages avec:set langmap=ΑA,ΒB,ΨC [...]
dans votre vimrc.Réponses:
Je recommanderais
keymap
, ce qui peut résoudre vos problèmes. Mettez-les dans votre vimrcpour désactiver le grec par défaut.Vous pouvez activer ou désactiver l'option (grec) et désactiver (anglais) en utilisant
<ctrl>+^
(vous pouvez également utiliser<ctrl>+6
, il est mappé sur la clé, pas sur le symbole) en mode insertion et en mode remplacement (ne fonctionne pas dans Mode normal). Pour désactiver automatiquement lorsque vous quittez le mode d'insertion, vous pouvez utiliserPlus sur ces
:h iminsert
:h keymap
:h imsearch
:h i_CTRL-^
MODIFIER le deuxième commentaire:
Vous pouvez essayer cela pour activer le grec automatiquement, si vous entrez en mode insertion (et remplacez le mode), et pour désactiver automatiquement, si vous quittez (alors vous n'avez pas besoin du mappage mentionné précédemment).
la source
:map >a
, et s'il y a , démappez-le par:unmap >a
. En tant qu'utilisateur non grec et non MacOs, je suis déjà à bout de souffle. Désolé et bonne chance!Comme je l'ai dit dans les commentaires, les mappages ne sont pas conçus pour faire ce que vous voulez faire. Une option intéressante pour ce cas d'utilisation est
langmap
.Cette option permet de conserver le comportement ou votre clavier en mode insertion et de changer son comportement dans les autres modes.
Pour l'utiliser, Vim doit être compilé avec
+langmap
, vous pouvez vérifier que cette option est activée avececho has('langmap')
: si la commande retourne1
l'option est activée sinon vous devrez obtenir une configuration avec cette option activée (pour savoir comment faire, il est une autre question).Lorsqu'elle est activée, l'option prend des paires de caractères par exemple
set langmap += à@
vous permettra d'ajouter unà
dans votre tampon lorsque vous êtes en mode insertion et que vous tapez aà
mais taperà
en mode normal déclenchera en fait un@
(cet exemple peut être utile sur azerty claviers pour faciliter le travail avec les macros).Pour utiliser langmap en grec, vous pouvez suivre l'exemple donné en
:h 'langmap'
ajoutant cette ligne à votrevimrc
(Copier cette ligne à partir d'ici peut ne pas être une bonne idée car je ne suis vraiment pas sûr de l'encodage, retirer la ligne directement du fichier d'aide est probablement plus sûr) :Maintenant, d'après ce que je comprends dans vos commentaires, cela reste un problème lorsque vous essayez d'utiliser des commandes prédéfinies: lorsque vous tapez une commande, le comportement du mode d'insertion sera déclenché à la place du comportement défini par langmap. Malheureusement, je ne suis pas sûr d'avoir une bonne solution pour cela. Une idée pourrait être de redéfinir des commandes par exemple comme ça:
De cette façon, lorsque vous taperez la commande que
λς
Vim exécutera,lw
mais je vois plusieurs inconvénients à cette méthode:Alors peut-être qu'un plugin suggéré par @Alexander Myshov dans sa réponse à cette question pourrait être utile (comme je n'en ai jamais essayé, je ne sais pas s'ils résolvent le problème, mais il semble qu'ils le fassent).
la source
Je tape régulièrement en anglais et en suédois. Le suédois est un problème plus petit à résoudre que le grec car il ne développe que l'alphabet anglais avec quelques caractères, mais je pense que ma solution est transférable au grec.
J'avais l'habitude de changer à l'aide du commutateur de clavier système de mon système d'exploitation. Le problème avec cela est, comme l'OP l'a noté, qu'il casse tout un tas de commandes, car en mode normal, chaque touche envoie un autre signal à Vim avec le clavier non anglais. Dans la configuration du clavier suédois, en outre, un tas de caractères non alphabétiques sont déplacés pour faire place aux nouveaux personnages
å
,ä
etö
. Par exemple,}
est tapé avec Alt-Shift-9 (correspondant à la parenthèse d' ouverture sur le clavier anglais), et la barre oblique inverse est tapée avec Alt-Shift-7. Le passage à une disposition de clavier suédoise vanille pour le mode d'insertion provoque donc tout un tas de maux de tête.Ma solution a été de remapper les clés pertinentes en mode insertion uniquement et d'envelopper ces mappages dans une fonction afin que je puisse facilement basculer d'avant en arrière. Le code ci-dessous montre comment j'ai fait cela dans mon
.vimrc
. Cela n'ajoute que les caractères dont j'ai besoin à la position qu'ils ont dans la disposition du clavier suédois, laissant tout le reste. Pour saisir les caractères qui sont masqués par eux (;
,:
,[
,{
,"
, et'
), je simplement frappé deux fois la touche. Heureusement, seules les personnes stupides ont même besoin de taper deuxä
s dans une rangée. (Si cette double frappe ne convient pas, vous pouvez les mapper sur Ctrl ou quelque chose comme ça. Le principe de base est que les caractères masqués restent à leur place sur le clavier mais ne sont plus en cours de réalisation. Je trouve cela beaucoup plus facile que de les déplacer.) Ce qui veut dire que lorsque je veux taper du suédois, je tape<Leader>s
, qui bascule vers ces mappages et applique la vérification orthographique suédoise. Pour revenir en arrière, je le fais<Leader>e
.Maintenant, pour le grec, cela impliquerait de faire des mappages pour l'ensemble de l'alphabet, ce qui est en fait moins compliqué qu'il n'y paraît une fois que vous avez mis le principe en place. La partie délicate serait alors de démapper toutes ces modifications lors du passage à l'anglais. Peut-être que quelqu'un peut trouver une façon astucieuse de le faire.
Je prévois de faire une fonction d'insertion comme celles ci-dessous pour l'arabe, l'autre langue que je tape souvent. Je pourrais revenir ici pour rendre compte du processus.
la source
Je tape aussi en deux langues: russe et anglais. Et maintenant j'utilise ce plugin https://github.com/lyokha/vim-xkbswitch . Ce plugin dépend du sélecteur de disposition de clavier natif, pour Mac OS X, vous pouvez utiliser le mien https://github.com/myshov/xkbswitch-macosx .
la source