lors de l'exécution de l'écran sur OSX, la commande + r gâche les touches fléchées dans vim sur tous les écrans

15

Comment détendez-vous cela? parce que vous vous retrouvez en appuyant sur la commande r tout le temps pour recharger votre navigateur, et souvent vous êtes dans le terminal.

Comme je n'ai pas compris comment réactiver les touches fléchées, je tue actuellement tous mes écrans et redémarre l'écran, ce qui est pénible.

Der Hochstapler
la source

Réponses:

28

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+Dpour détacher l'écran de votre terminal, puis exécutez screen -D -Rpour 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+Zet taper fgpour 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

Jander
la source
Un autre problème peut être le type de terminal qui crée de la
kynan
merci pour cette solution! cela me dérange en tant que développeur web. dans le navigateur, vous appuyez beaucoup sur cmd-r pour rafraîchir l'écran et, à l'occasion, j'ai dû frapper cmd-r dans vim par accident. je ne pouvais pas comprendre pourquoi mes touches fléchées étaient essuyées jusqu'à présent. et pour vous les puristes hjkl, la principale raison pour laquelle je n'utilise pas hjkl est qu'ils ne sont pas disponibles pour le mouvement du curseur en mode insertion. résoudre ce problème pour moi et je vais reconsidérer.
rev
6

Vous pouvez résoudre ce problème rapidement et facilement avec :!reset

GlypheGryphe
la source
1

Si vous utilisez iTerm, vous pouvez récupérer votre session vim en appuyant sur command+detcommand+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.

Adam Grant
la source
1

Je mappe Command-r à "Ignorer" dans les mappages de touches iTerm.

Capture d'écran de la boîte de dialogue des préférences iTerm2

Christian Long
la source