Comment basculer entre le mode commande et le mode insertion dans Vim?

87

Je viens de commencer à utiliser Vim comme IDE. Je l'utilisais comme éditeur de test depuis un moment maintenant, donc je n'ai pas eu à passer très souvent en mode commande. Mais, puisque je programme en Java, je dois passer en mode commande pour créer le fichier, le compiler / l'exécuter ... etc.

Le problème est: j'ai besoin d'un bon moyen de basculer entre les deux modes.

J'ai regardé en ligne et il est dit que la <Esc>clé est censée faire cela, mais cela ne fonctionne pas pour moi (peut-être que ce n'est pas pour gVim? Je ne sais pas pourquoi.)

Je dois appuyer à CTRLOchaque fois pour passer en mode commande; la touche d'échappement fonctionne à partir de ce mode ... elle me ramène au mode insertion. Mais existe-t-il un moyen meilleur ou plus simple de basculer entre le mode commande et le mode insertion?

Ravish Chawla
la source
2
Echap est définitivement la bonne clé pour terminer une insertion. Un insert peut être démarré de différentes manières. I minuscule pour commencer l'insertion à votre curseur, I majuscule pour commencer l'insertion au début de la ligne, etc.
Vaughn Cato
À partir d'un fichier vide, les caractères suivants devraient vous donner un fichier contenant le mot "bonjour": ihello<ESC>:w hello.txt<ENTER>
Vaughn Cato
8
ctrl-[fonctionne comme un substitut à Echap sur de nombreux claviers.
Vaughn Cato

Réponses:

52

On dirait que votre Vim est lancé en mode facile . Voir :help easy.

Cela se produit lorsque Vim est invoqué avec l' -yargument ou as evim, ou peut-être que vous avez un :set insertmodequelque part dans votre .vimrcconfiguration. Trouvez la source et désactivez-la; temporairement, cela peut également être fait via Ctrl+ O :set noim Enter.

Ingo Karkat
la source
Je crois que c'est tout. J'avais activé le mode insertion dans mon fichier. Après l'avoir retiré, la touche d'échappement fonctionne parfaitement. Merci!
Ravish Chawla
8
c'est le mode facile !?
Stachu
5
Vim mode facile, maintenant c'est un oxymore. Est-ce là où il est possible de quitter vim?
Davos
1
@Davos c'est le mode où il est démarré en mode insertion, donc ironiquement c'est un mode où il n'est pas possible de quitter vim: p "mode normal" est bien plus facile juste alt + :, x XD
Fuseteam
115

Appuyez sur pour ESCpasser du mode insertion au mode normal, où vous pouvez appuyer sur :pour saisir une commande. Appuyez à inouveau pour revenir au mode insertion, et vous êtes prêt à partir.

Je ne suis pas un gourou de Vim, donc quelqu'un d'autre peut être plus expérimenté et vous donner d'autres options.

Ricardo Souza
la source
3
Pour la plupart d'entre nous, mais la réponse acceptée avait la réponse au problème spécifique.
Saul Axel Martinez Ortiz
19

Cela a été mentionné dans d' autres questions , mais ctrl + [équivaut à ESCsur tous les claviers.

begolf123
la source
Je ne savais pas que, utile lorsque la touche d'échappement n'est pas prise en charge
shuva
Wow, merci pour cette information! La séquence de touches de copie Tmux a maintenant beaucoup plus de sens.
Thomas Legris
4

En utilisant jj

Dans mon cas, le paramètre .vimrc (ou dans gVim il est _vimrc) ci-dessous.

inoremap jj <Esc>   """ jj key is <Esc> setting
StarMomo
la source
Il s'agit d'un remappage courant. Je trouve qu'il a un léger retard car il attend l'entrée de caractères supplémentaires. Alternativement, remappez votre clé capslock à esc en utilisant quelque chose comme KeyRemap4MacBook sur un Macbook: github.com/tekezo/KeyRemap4MacBook
Koobz
J'ai trouvé plus facile de remapper l'onglet en esc: 3
Fuseteam
3

Venant d'emacs, j'ai trouvé que j'aime les ctrl +touches pour faire des choses, et dans vim, j'ai trouvé que les deux [ctrl + C]et [alt + backspace]passeront en mode normal à partir du mode d'insertion. Vous pourriez essayer de voir si l'une de ces solutions fonctionne pour vous.

maxorciste
la source
2

Pour moi, le problème était que j'étais en mode enregistrement . Pour quitter le mode d'enregistrement, appuyez sur q. Puis a Esctravaillé comme prévu pour moi.

betontalpfa
la source
0

Il existe également une autre solution pour ce genre de problème, qui est plutôt rare, je pense, et vous pouvez en faire l'expérience si vous utilisez vim sur OS X Sierra. En fait, c'est un problème avec le bouton Echap - pas avec vim. Par exemple, je n'ai pas pu quitter la vidéo plein écran sur youtube en utilisant Esc, mais j'ai vécu avec ça pendant quelques mois jusqu'à ce que j'aie rencontré le même problème avec vim.

J'ai trouvé cette solution. Si vous êtes assez paresseux pour suivre un lien externe, éteindre Siri et tuer le processus dans Activity Monitor a aidé.

laurier-rose
la source
0

Vous pouvez utiliser Alt + H, J, K, L pour déplacer le curseur en mode insertion.

Khoi Hoang
la source
1
Non, tu ne peux pas. C'est probablement un remappage de votre configuration.
Saul Axel Martinez Ortiz
@SaulAxelMartinezOrtiz oui vous pouvez, bien que techniquement, il quitte le mode normal après quoi vous pouvez vous déplacer en mode normal: p
Fuseteam