Quitter le mode d'insertion de bloc avec Ctrl-C

Dans vim, si vous êtes en mode d'insertion de bloc ( Ctrl-V, Shift-I ) et que vous quittez en utilisant Ctrl-C (au lieu d' Esc ), il annule la modification du bloc.

Pourquoi est-ce? Dans presque tous les autres contexts, Ctrl-C et Esc sont synonymes. (Et idéalement, il y a un moyen de résoudre ce problème – je suis maintenant habitué à faire Ctrl-C et ce serait dommage si je devais réapprendre …)

Ctrl-c et Esc ne sont pas garantis d'être synonymes, et souvent diffèrent. Par exemple, en mode Insert , Esc triggers des abréviations et passe en mode Normal , alors que Ctrl-c ne triggers pas d'abréviations ni l'autocommand InsertLeave et passe directement en mode Normal . Un autre exemple est dans l'ancien mode de command line vi , Esc exécuterait la command comme si vous aviez appuyé sur Entrée . Vim a délibérément changé cela parce que ce comportement a été jugé inintéressant et surprenant, mais vous pouvez toujours l'activer en ajoutant x à 'cpoptions' .

Comme pour les opérateurs visuels par blocs, la balise d'aide blockwise-operators a la documentation suivante:

 Visual-block Insert *v_b_I* With a blockwise selection, I{ssortingng}<ESC> will insert {ssortingng} at the start of block on every line of the block, provided that the line extends into the block. Thus lines that are short will remain unmodified. TABs are split to retain visual columns. 

Notez que seul Esc est mentionné, pas Ctrl-c .

Donc, non, Ctrl-c et Esc ne sont pas équivalents. Ce n'est jamais une honte de se désabuser d'une idée fausse. Une fois que vous avez réalisé cela, vous pouvez décider quoi faire ensuite. Les options immédiatement évidentes sont d'apprendre les différences et d'utiliser la bonne key, ou décider que vous n'avez pas besoin de la fonctionnalité de l'une des keys et remappez-la pour correspondre à l'autre.

Essayez :map ^C esc où "^ C" est entré via CTRL + v puis CTRL + c .