Comment mapper la clé ALT dans .vimrc?

9

Afin de pouvoir ajouter des lignes vierges sans passer en mode d'insertion, j'essaie de mapper ALT-oet ALT-Ode o<ESC>eto<ESC>

J'ai essayé ce qui suit dans mon .vimrc

map <M-o> o<ESC>
map <M-O> O<ESC>

et

map <ALT-o> o<ESC>
map <ALT-O> O<ESC>

et (comme suggéré ci-dessous)

map <A-o> o<ESC>
map <A-O> O<ESC>

mais aucun ne fonctionne. Il donne simplement le comportement habituel, comme s'il ALT-on'avait pas été défini.

C'est la première fois que je modifie le .vimrcfichier et je ne trouve pas où la documentation vous indique comment désigner les différentes clés. Mais je peux vérifier que mon .vimrcfichier est en cours de lecture, en incluant:

map <Enter> ihello<ESC>

Qui correspond <Enter>avec succès à l'insertion helloet au retour en mode commande.

J'utilise vim avec cygwin.

Eric Wilson
la source
Il semble que votre terminal ne passe pas du tout les séquences alt. Y a-t-il d'autres séquences connues qui fonctionnent? Et si vous essayiez Ctrl? Quel terminal utilisez-vous?
Caleb
J'utilise vim sur cygwin, mais j'ai fait fonctionner d'autres scripts, comme mes détails d'édition.
Eric Wilson
Ctrl fonctionne, en quelque sorte. Cela ne semble pas me permettre de distinguer entre <C-o>et <C-O>.
Eric Wilson
La réponse de Giles est sur la bonne voie. Vous devez définitivement basculer vers un terminal plus performant. Ces problèmes devraient disparaître et vous récupérerez vos clés!
Caleb

Réponses:

10

Pour voir ce que votre terminal envoie lorsque vous appuyez sur une touche, passez en mode insertion, appuyez sur Ctrl+V, puis sur la touche. La plupart des touches avec la plupart des terminaux envoient une séquence d'échappement où seul le premier caractère est un caractère de contrôle; Ctrl+Vinsère le caractère suivant littéralement, vous pouvez donc insérer la séquence d'échappement entière de cette façon.

Différents terminaux envoient différentes séquences d'échappement pour certaines combinaisons de touches. De nombreux terminaux envoient le même caractère ( ^O) pour les deux Ctrl+Oet Ctrl+Shift+O; si tel est le cas, Vim ne pourra pas les distinguer.

Vous mentionnez que vous utilisez Cygwin; dans quel terminal vous utilisez Vim est l'information la plus pertinente. Si vous utilisez la console Windows native, procurez-vous un meilleur terminal. Je recommande MinTTY pour exécuter des applications en mode texte Cygwin dans un terminal sous Windows en dehors de X, mais RXVT et PuTTYcyg natifs de Cygwin sont également bons. (Aussi Console2 pour exécuter les applications de console Windows, mais c'est carrément hors sujet ici).

Gilles 'SO- arrête d'être méchant'
la source
3

S'il est Control+Vsuivi de ALT-xspectacles ^[x(tapez le terminal), vous pouvez le corriger avec ce petit script de vim.wikia.com :

for i in range(97,122)
  let c = nr2char(i)
  exec "map \e".c." <M-".c.">"
  exec "map! \e".c." <M-".c.">"
endfor

Ajoutez à .vimrc pour tous les mappages de touches alt.

laktak
la source
1

Cela fonctionne pour moi sur le terminal Ubuntu 16.04 xfce (et le terminal rouille alacritty)

Définissez le déclencheur d'extrait ultisnip sur Meta-/(comme pour l'extrait emacs)

let g:UltiSnipsExpandTrigger="^[/"

Voici maintenant je tape ^[/vim

En mode insertion Ctrl-V Alt-/

( Metaest la Altclé de mon clavier PC)

user178047
la source
-1

La touche M (eta) est le bouton Windows. C'est juste <A-o>.

Martin Ueding
la source
Cela ne fonctionne pas non plus.
Eric Wilson
Ce n'est pas toujours le cas, sur des dispositions de clavier et des paramètres linguistiques différents, ils sont souvent différents.
Caleb
@Caleb existe-t-il une documentation à ce sujet?
Eric Wilson
J'ai essayé map <A-o> o<ESC>et cela a fonctionné pour moi. Si vous l'avez mis dans votre .vimrc, l'avez-vous rechargé?
Martin Ueding
Le demandeur a déjà indiqué dans sa question qu'il avait vérifié que le fichier était en cours de chargement. Ce n'est pas relatif à l'utilisateur car ils sont sur Windows, mais vous pouvez voir différentes configurations de clés Meta / Win / Alt dans les fichiers de géométrie / symbole / code clé xkb. Vous remarquerez que même dans les options de disposition du clavier gnome, il existe plusieurs façons courantes de remapper entre Alt / Win / Meta. Cela s'explique notamment par la disparité des configurations de base.
Caleb