En tant que bon petit défenseur de Vim, je me sens obligé de vous dire d'apprendre à utiliser hjkl comme touches de curseur. À mi-chemin de l'exploration du problème, j'ai pensé qu'il s'était mystérieusement résolu, jusqu'à ce que je réalise que je testais en utilisant hjkl au lieu des touches fléchées réelles.
Quoi qu'il en soit, maintenant pour une vraie réponse.
Au lieu d'arrêter tous vos écrans et de redémarrer, vous pouvez profiter de la capacité de l'écran à se déplacer entre les terminaux. Appuyez sur CTRL+A
CTRL+D
pour détacher l'écran de votre terminal, puis exécutez screen -D -R
pour rattacher. Cela devrait faire fonctionner à nouveau vos touches fléchées.
Si vous n'êtes pas à l'écran, mais uniquement dans Vim, vous pouvez CTRL+Z
et taper fg
pour le même effet.
Vous pouvez également contourner le problème des touches de curseur dans Vim, mais la réinitialisation peut avoir changé d'autres options de terminal, il est donc plus sûr de faire comme décrit ci-dessus de peur de voir d'autres problèmes aléatoires d'affichage / clavier. Si vous voulez quand même les remappages, les voici:
map <Esc>[A <Up>
map <Esc>[B <Down>
map <Esc>[C <Right>
map <Esc>[D <Left>
Détails sales:
Vim et screen utilisent tous les deux la bibliothèque ncurses pour gérer le terminal. L'une des choses que ncurses fait quand il prend le contrôle d'un terminal compatible VT100 est de basculer les touches fléchées en "mode d'application", ce qui change les codes qu'ils émettent. La touche fléchée vers le haut, par exemple, passe de Esc
[
A
à Esc
O
A
. Le code de contrôle VT100 qu'il émet pour ce faire est Esc
[
?
1
h
. La commande de réinitialisation de terminal envoyée par Command + R réinitialise les touches de curseur à leur valeur par défaut.
L'écran de détachement et de rattachement amène ncurses à reprendre le contrôle du terminal, qui réapplique tous les paramètres qu'il aime, c'est donc probablement le moyen le plus portable et le plus fiable pour restaurer les choses à la normale.
Codes de contrôle VT100: http://www.handshake.de/infobase/dfue/prgrmmer/t322.htm
Vous pouvez résoudre ce problème rapidement et facilement avec
:!reset
la source
Si vous utilisez iTerm, vous pouvez récupérer votre session vim en appuyant sur
command+d
etcommand+w
Pourquoi?
command+d
divisera le volet du terminal, restaurant comme par magie celui dont vous venez.command+w
va maintenant fermer le volet fractionné que vous venez d'ouvrir.la source
Je mappe Command-r à "Ignorer" dans les mappages de touches iTerm.
la source