94 votes

Vim bloqué en mode insertion

J'utilise Vim depuis plusieurs mois maintenant via mon hébergeur web (ils permettent l'accès Putty). Soudain, la touche escape est devenue non réactive. Je ne peux pas sortir du mode insertion ou tout autre mode en appuyant simplement sur la touche échappement. Je dois appuyer sur F1 ce qui affiche l'aide dans vim et me met en mode commande.

Je suis presque certain que la touche échappement de mon clavier fonctionne correctement puisque tous mes raccourcis windows qui utilisent la touche échappement fonctionnent normalement.

Je sais que c'est une question ridicule et je suis certain qu'il y a beaucoup plus à examiner concernant une solution. Ce dont j'ai vraiment besoin, c'est d'une piste solide pour savoir par où commencer à chercher.

Des choses qui pourraient aider :

  1. J'utilise Vim via Putty
  2. Je me connecte en utilisant jailshell
  3. Je ne suis pas root

0 votes

Quels sont vos paramètres de terminal ? c'est-à-dire à quoi est exactement réglée la variable d'environnement TERM (dans l'interpréteur de commandes distant) ?

0 votes

$TERM est défini sur 'xterm'

2 votes

Est-ce que Ctrl-[ fonctionne ? Que se passe-t-il si vous appuyez sur Ctrl-v puis sur escape ? Cela devrait s'afficher comme ^[.

226voto

bhaskar Points 2091

J'avais accidentellement appuyé sur Ctrl + s et je suis resté coincé en mode insertion. Pour en sortir, utilisez Ctrl + q.

12 votes

Ce n'est pas le mode insertion, c'est XOFF. Vous pouvez désactiver le contrôle de flux logiciel en faisant stty -ixon (ajoutez-le à votre ~/.bashrc). Ensuite, cette touche sera disponible pour être liée à autre chose. Par défaut dans Bash, elle est liée à forward-search-history (l'inverse de Ctrl-r). Ctrl-q (Bash quoted-insert) sera également disponible.

0 votes

@DennisWilliamson Ne serait-il pas préférable de placer .bash_profile à cet endroit? Est-il nécessaire de l'éteindre dans un shell non interactif, n'est-ce pas?

1 votes

@PiotrDobrogost: "Lorsqu'un shell interactif qui n'est pas un shell de connexion est démarré, Bash lit et exécute les commandes de ~/.bashrc, si ce fichier existe." .bash_profile est seulement exécuté lorsque Bash est un shell de connexion. "Donc, en général, votre ~/.bash_profile contient la ligne if [ -f ~/.bashrc ]; then . ~/.bashrc; fi"

30voto

Damian Powell Points 315

Essayez d'utiliser Ctrl-[ à la place de Esc.

Quel est le résultat de :

python -c "print ord(raw_input('char '))"

lorsque vous appuyez sur Esc et Enter? Il devrait être "27". Quel est le résultat de l'appui sur Ctrl-V puis Esc?

Avez-vous vérifié tous les paramètres dans PuTTY pour voir s'ils sont raisonnables?

Utilisez-vous Bash sur le système distant? Regardez la sortie de

bind -p | grep -i '\\e' | less

et voir si vous voyez quelque chose d'inhabituel. Avez-vous un fichier appelé ~/.inputrc? Regardez son contenu pour voir s'il y a quelque chose d'inhabituel.

Regardez votre ~/.vimrc et vérifiez également si tout est en ordre.

4 votes

Ctrl-c devrait également mettre fin au mode d'insertion (le '[' est parfois un peu difficile à obtenir sur certains claviers)

1 votes

J'ai exécuté le script python et il est revenu vide. Comment puis-je réparer cela? J'utilise putty.

0 votes

@Keith: Avez-vous essayé l'une des autres suggestions de diagnostic?

10voto

SandRock Points 522

Peut-être que vous utilisez le mode d'insertion.

'insertmode' 'im' 'noinsertmode' 'noim'
booléen (par défaut désactivé)
Fait fonctionner Vim de manière à ce que le mode Insertion soit le mode par défaut. Utile si vous voulez utiliser Vim comme un éditeur sans mode. Utilisé pour |evim|.
[...]
- Utilisez CTRL-O pour exécuter une commande en mode Normal (|i_CTRL-O|). Lorsque il s'agit d'un mappage, il est exécuté comme si 'insertmode' était désactivé. Le mode Normal reste actif jusqu'à ce que le mappage soit terminé. - Utilisez CTRL-L pour exécuter un certain nombre de commandes en mode Normal, puis utilisez Esc pour revenir en mode Insertion. Notez que CTRL-L déplace le curseur vers la gauche, comme le fait Esc quand 'insertmode' n'est pas activé. |i_CTRL-L|

Je suggère d'éditer ~/.vimrc pour ajouter la ligne suivante :

set noinsertmode         "désactiver le mode d'insertion

1 votes

Dans mon cas, il est resté en mode insertion parce que j'avais accidentellement utilisé `-y` dans la ligne de commande Comme indiqué dans le manuel: -y Démarrer Vim en mode facile, tout comme si l'exécutable avait été appelé "evim" ou "eview". Fait en sorte que Vim se comporte comme un éditeur click-and-type. Pour quitter ce "mode facile", il suffit d'utiliser CTRL + l (L minuscule) comme l'a dit +SandRock

0 votes

J'ai accidentellement entré :set insertmode CTRL-L m'en a sorti.

0 votes

J'ai changé une ligne de commande de diff -y (côte à côte) à vimdiff -y puis je me suis demandé ce qui se passait.

8voto

Sangria Points 1

Trouvez une façon étrange de quitter :

copiez quelque chose et collez-le, puis vous pouvez utiliser ou ou pour quitter

voir gif : https://i.stack.imgur.com/NBnns.gif

0 votes

J'ai eu une session vim dans une fenêtre tmux commencer à agir bizarrement après y avoir accédé via SSH depuis Windows - tout le reste, y compris d'autres sessions vim dans la même session tmux, fonctionnait parfaitement. ctrl+c etc. n'a pas fonctionné, mais cela l'a fait.

0 votes

C'est la seule solution qui a fonctionné pour moi. Tous les autres n'ont pas fonctionné. Je l'utilise avec iterm2, mosh et tmux. Pas sûr si cela a de l'importance.

0voto

vim_user Points 1

J'avais ce problème, mais j'ai réalisé que c'était parce que j'avais accidentellement changé le mode d'entrée SCIM en "Autre - CODE BRUT". Je l'ai changé de retour en Anglais/Clavier et je n'ai plus eu de problèmes.

0 votes

Bien que cela n'ait pas été SCIM pour moi, j'ai eu le même problème et il a été résolu en lançant la boîte de dialogue des paramètres de langue de Gnome, qui a détecté un problème d'installation. Après avoir corrigé cela et redémarré, ma touche d'échappement a fonctionné à nouveau.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X