Vim: ¿Cómo insertar en modo de bloque visual?

145

¿Cómo se puede insertar cuando está en modo de bloqueo visual (presionando ctrl-V) en Vim?

ovatsug25
fuente
44
posible duplicado de VIM Blockwise Insert
Conner
1
RESUMEN RÁPIDA DE LA RESPUESTA: Voy a poner la respuesta aquí en forma simple. Hay tantos comentarios que este hilo se está ahogando. 1) Verifique si tiene + visualextra habilitado en su versión de Vim, escribiendo: ver en Vim. 2) Se inserta marcando primero las cosas que desea editar y luego presiona I (mayúscula i) - en minúsculas no funcionaré. 3) Una vez que haga eso, es posible que parezca que solo está insertando en la primera línea, pero cuando haya terminado, presione ESC y j, luego el texto se copia en las otras líneas. Así es para mí.
Zeth

Respuestas:

202

Prueba esto

Después de seleccionar un bloque de texto, presione Shift+ io mayúscula I.

Las minúsculas ino funcionarán.

Luego escriba las cosas que desea y finalmente para aplicarlo a todas las líneas, presione Escdos veces.




Si esto no funciona ...

Compruebe si ha +visualextrahabilitado en su versión de Vim.

Puede hacerlo escribiendo :very desplazándose por la lista de características. (Es posible que desee copiarlo y pegarlo en un búfer y realizar una búsqueda incremental porque el formato es extraño).

Habilitarlo está fuera del alcance de esta pregunta, pero estoy seguro de que puedes encontrarlo en algún lugar.

ovatsug25
fuente
13
¡No te olvides Atambién!
jmdeldin
42
También debe presionar escape para salir del modo de inserción antes de que el texto se duplique.
Brandon Joyce
19
¿Alguien ha visto que esto no funciona? Tengo una configuración vim no modificada en CentOS. Presiono ctrl + v, presiono ja varias veces y veo que el cursor resalta el primer carácter de unas pocas líneas. Presiono shift + i. El cursor se mueve al primer carácter de la primera línea, pero vuelvo al modo normal. Sé esto porque si presiono "a", mueve el personaje a la derecha y dice "- INSERTAR -". Si escribo algunos caracteres y presiono escape, no se aplica a las otras líneas.
Tyler Collier
2
@ TylerCollier Estoy experimentando el problema en Ubuntu 14.04 en digitalocean. Por favor comente si ha encontrado una solución.
Zack Burt
2
@ZacharyBurt El vim predeterminado instalado con Ubuntu 14.04 (instalado como vi) no incluye la visualextrafunción, por lo que la inserción de bloque no funcionará allí. sudo apt-get install vimtrae una versión más completa, en la que visualextrase activa. @TylerCollier Este también puede ser el mismo problema en su instalación de CentOS: verifique la salida de vim --versionpara ver la lista completa de características activadas.
Gabriel Grant
40
  1. presione ctrl y v // inicio seleccione
  2. presione Mayús y yo // luego escriba cualquier texto
  3. presione esc esc // presione esc dos veces
dom gratis
fuente
Después de presionar ctrl + v, puede presionar jpara seleccionar rápidamente las líneas debajo de la posición actual, o presionar kpara seleccionar rápidamente las líneas arriba de la posición actual. También puede usar la shifttecla con los errores upo downpara hacer la selección.
tyler.frankenstein
1
De todas las respuestas, esta es la única que funcionó para mí. Estoy en una Mac usando la instalación de preparación
Daniel Kaplan
He estado quejando durante años que no podía fácilmente i nsert (como c ambio) en el bloque seleccionar. Entonces es con una capital i, estoy asombrado. He estado usando :normal iINPUT<CR>para ingresar al principio de las líneas. Muchas gracias por esto!
Tim Visée
No creo que necesites presionar esc dos veces. Si presiona algo después de esc, actualizará automáticamente el texto. Si no, lo hará en medio segundo más o menos.
Shahbaz
29

También puede tener un caso de uso en el que desea eliminar un bloque de texto y reemplazarlo.

Me gusta esto

Hello World
Hello World

Puede seleccionar el bloque visual antes de "W" y presionar Shift+ i- Escriba "Cool" - Presione ESCy luego elimine "Mundo" mediante la selección del bloque visual.

Alternativamente, la mejor manera de hacerlo es simplemente seleccionar el bloque visual "Mundo" en ambas líneas. Escriba cpara change. Ahora estás en el insertmodo. Inserta las cosas que quieras y presiona ESC. Ambos se reflejan con menos pulsaciones de teclas.

Hello Cool 
Hello Cool
Nishant
fuente
el paso final es útil para mí, debes presionar y ESCluego toda la línea marcada mostrará el carácter que escribes.
Webb Lu
gran cosa, ayuda mucho
prosti
9

si desea agregar texto nuevo antes o después de la columna seleccionada:

  • presione ctrl + v
  • seleccionar columnas
  • presione shift + i
  • escribe tu texto
  • presione esc
  • presione "jj"
rugby82
fuente
2
¡Tanque, jjpropagar los cambios a todas las líneas a continuación fue lo último que me faltaba!
kilogic
jjes un asesino!
Anh Tran