iTerm2 Vim alt + flèche droite / gauche

13

En tant qu'utilisateur Linux, j'ai l'habitude de passer d'un mot à l'autre dans vim / nano en utilisant ALT+ leftou right.

Cela ne semble pas fonctionner correctement avec iTerm, j'utilise zsh, j'ai essayé d'ajouter;

bindkey -e
bindkey '^[[1;9C' forward-word
bindkey '^[[1;9D' backward-word

Cela fonctionne, mais à l'intérieur de zsh uniquement, j'ai commenté ces lignes et ajouté dans iTerm un raccourci clavier;

entrez la description de l'image ici

Cela fonctionne, mais uniquement pour le ALTleft

Comment puis-je le faire fonctionner pour la flèche droite aussi?

seds
la source

Réponses:

10

Dans les propriétés d'iTerm, accédez à Profils -> Clés et configurez-y

  • Pour ⌥→envoyer la séquence d'échappement[1;5C
  • Pour ⌥←envoyer la séquence d'échappement[1;5D

entrez la description de l'image ici

eiennohito
la source
Ça ne marche pas pour moi. Les séquences d'échappement sont envoyées, mais vim ne déplace que d'un espace dans les deux sens. Exécuter le vim 7.3 par défaut fourni avec OS X 10.8. Idéalement, j'aimerais le changer du côté de vim, sans modifier les paramètres par défaut de l'émulateur de terminal (car cela entraînera une meilleure portabilité).
slhck
C'est bizarre, cela fonctionne à la fois dans vim (de homebrew, pas celui par défaut) et zsh avec la configuration par défaut de oh-my-zsh (dans ~ / .oh-my-zsh / lib / key-bindings.sh).
eiennohito
Ne fonctionne pas ici non plus, je peux utiliser alt + flèche à l'intérieur de zsh, dans Vim cela ne fonctionne qu'avec shift + flèche :(
seds
Je l'ai vérifié une fois de plus sur les systèmes distants disponibles (Ubuntu 13.04, Debian stable et Linux scientifique) et cela fonctionne partout. Quelle est la sortie lorsque vous appuyez sur Ctrl + V, ⌥ →? Pour moi, c'est ^ [[1; 5C
eiennohito
Fonctionne pour moi: iTerm / Vi + zsh
Petro Semeniuk
7

Commencez par consulter le code clé que votre terminal envoie à vim:

$ sed -n l
^[[1;9D 

Dans l'exemple ci-dessus, j'ai exécuté la commande sed et appuyé sur Alt + Left.

La ^[[1;9Dséquence d'échappement est envoyée à vim, nous pouvons donc l'utiliser pour notre mappage.

Ajouter à vimrc:

map <Esc>[1;9D :tabn<CR>
lfender6445
la source
Merci, cela a fonctionné pour moi.
j5shi
0

Aucune de ces réponses n'a fonctionné pour moi. J'ai fini par charger une machine virtuelle Linux et vérifié ce que j'allais obtenir <Alt-ARROW>.

Les 4 séquences d'échappement qui ont fonctionné pour moi sont celles-ci:

  • <Alt+Up>: [1;3A
  • <Alt+Down>: [1;3B
  • <Alt+Right>: [1;3C
  • <Alt+Left>: [1;3D

Veillez à modifier les touches de profil et non les principales qui seront remplacées par celles du profil (où Alt + Flèches sont définies par défaut sur une séquence hexadécimale qui ne fonctionnait pas avec vim).

Jerska
la source
-1

Juste une autre solution possible, vim propose des mouvements de mots seuls, voir:

:help word-motions
tnull
la source
2
Vous devez inclure les informations essentielles au lieu de simplement mettre une référence ici.
pabouk