Vim: Comment insérer en mode bloc visuel?

145

Comment pouvez-vous insérer lorsque vous êtes en mode bloc visuel (en appuyant sur ctrl-V) dans Vim?

ovatsug25
la source
4
duplicata possible de VIM Blockwise Insert
Conner
1
RÉSUMÉ RAPIDE DE LA RÉPONSE: Je vais simplement mettre la réponse ici sous une forme simple. Il y a tellement de commentaires que ce fil se noie. 1) Vérifiez si vous avez activé + visualextra dans votre version de Vim, en tapant: ver dans Vim. 2) Vous insérez en marquant d'abord les éléments que vous souhaitez modifier, puis appuyez sur I (i majuscule) - je ne fonctionnerai pas en minuscules. 3) Une fois que vous avez fait cela, vous aurez peut-être l'impression que vous n'insérez que sur la première ligne, mais lorsque vous avez terminé, appuyez sur ESC et j, puis le texte est copié sur les autres lignes. C'est comme ça que ça se passe pour moi.
Zeth

Réponses:

203

Essaye ça

Après avoir sélectionné un bloc de texte, appuyez sur Shift+ iou majuscule I.

Les minuscules ine fonctionneront pas.

Puis tapez les choses que vous voulez et enfin pour l'appliquer à toutes les lignes, appuyez Escdeux fois.




Si cela ne fonctionne pas ...

Vérifiez si vous avez +visualextraactivé dans votre version de Vim.

Vous pouvez le faire en tapant :veret en faisant défiler la liste des fonctionnalités. (Vous voudrez peut-être le copier et le coller dans un tampon et effectuer une recherche incrémentielle car le format est étrange.)

L'activer sort du cadre de cette question, mais je suis sûr que vous pouvez le trouver quelque part.

ovatsug25
la source
13
N'oubliez pas non Aplus!
jmdeldin
42
Vous devez également appuyer sur échapper pour quitter le mode insertion avant que le texte ne soit dupliqué.
Brandon Joyce
19
Quelqu'un at-il déjà vu cela ne pas fonctionner? J'ai une configuration vim non modifiée sur CentOS. J'appuie sur ctrl + v, j'appuie sur ja plusieurs fois et je vois le curseur mettre en évidence le premier caractère de quelques lignes. J'appuie sur Maj + i. Le curseur est déplacé sur le premier caractère de la première ligne, mais je suis de retour en mode normal. Je le sais parce que si j'appuie sur "a", cela déplace le caractère vers la droite, et il dit "- INSERT -". Si je tape quelques caractères et appuie sur échapper, cela ne s'applique pas aux autres lignes.
Tyler Collier
2
@TylerCollier Je rencontre le problème sur Ubuntu 14.04 sur digitalocean. Veuillez commenter si vous avez trouvé une solution.
Zack Burt
2
@ZacharyBurt Le vim par défaut installé avec Ubuntu 14.04 (installé en tant que vi) n'inclut pas la visualextrafonctionnalité, donc l'insertion de bloc ne fonctionnera pas là-bas. sudo apt-get install vimapporte une version plus complète, sur laquelle visualextraest activé. @TylerCollier Cela peut également être le même problème sur votre installation CentOS: vérifiez la sortie de vim --versionpour voir la liste complète des fonctionnalités activées.
Gabriel Grant
41
  1. appuyez sur ctrl et v // démarrer sélectionner
  2. appuyez sur Maj et i // puis tapez n'importe quel texte
  3. appuyez sur esc esc // appuyez deux fois sur esc
dom gratuit
la source
Après avoir appuyé sur ctrl + v, vous pouvez appuyer sur jpour sélectionner rapidement la (les) ligne (s) sous la position actuelle, ou appuyer sur kpour sélectionner rapidement la (les) ligne (s) au-dessus de la position actuelle. Vous pouvez également utiliser la shifttouche avec les erreurs upou downpour effectuer la sélection.
tyler.frankenstein
1
De toutes les réponses, c'est la seule qui a fonctionné pour moi. Je suis sur un mac en utilisant l'installation de brassage
Daniel Kaplan
Je me plains depuis des années que je ne pouvais pas facilement i nsert (comme c hangement) dans le bloc sélectionnez. Donc c'est avec un capital i, je suis étonné. J'ai utilisé :normal iINPUT<CR>pour entrer au début des lignes. Merci beaucoup pour ça!
Tim Visée le
Je ne pense pas que vous deviez appuyer deux fois sur esc. Si vous appuyez sur quelque chose après esc, cela mettra automatiquement à jour le texte. Sinon, il le fera dans environ une demi-seconde.
Shahbaz
29

Vous pouvez également avoir un cas d'utilisation dans lequel vous souhaitez supprimer un bloc de texte et le remplacer.

Comme ça

Hello World
Hello World

Vous pouvez sélectionner un bloc visuel avant "W" et appuyez sur Shift+ i- Tapez "Cool" - Appuyez sur ESCpuis supprimez "World" par sélection de bloc visuel.

Alternativement, la façon la plus cool de le faire est de simplement sélectionner le bloc visuel "Monde" dans les deux lignes. Typec pour change. Vous êtes maintenant dans le insertmode. Insérez ce que vous voulez et appuyez sur ESC. Les deux sont reflétés avec moins de frappes.

Hello Cool 
Hello Cool
Nishant
la source
la dernière étape est utile pour moi, vous devez appuyer sur ESCpuis toute la ligne marquée affichera le caractère que vous tapez.
Webb Lu
super trucs, ça aide beaucoup
prosti
9

si vous souhaitez ajouter un nouveau texte avant ou après la colonne sélectionnée:

  • appuyez sur ctrl + v
  • sélectionner des colonnes
  • appuyez sur Maj + i
  • écris ton texte
  • appuyez sur esc
  • appuyez sur "jj"
rugby82
la source
2
Tank you, jjpropager les modifications à toutes les lignes ci-dessous était le dernier morceau qui me manquait!
kilogic
jjest un tueur!
Anh Tran