salir editar cómo con comandos comando buscar archivo vim editing viemu

vim - editar - manual vi



¿Cómo inserto texto al comienzo de una selección multilínea en vi/Vim? (11)

En Vim , ¿cómo hago para insertar caracteres al principio de cada línea en una selección?

Por ejemplo, digamos que quiero comentar un bloque de código antes de // al principio de cada línea (asumiendo que el sistema de comentarios de mi idioma no permite comentarios de bloque como /* */ ). ¿Cómo haría esto?


El patrón general para buscar y reemplazar es:

:s/search/replace/

Reemplaza la primera aparición de ''buscar'' con ''reemplazar'' para la línea actual

:s/search/replace/g

Reemplaza todas las apariciones de ''buscar'' con ''reemplazar'' para la línea actual, ''g'' es la abreviatura de ''global''

Este comando reemplazará cada aparición de ''búsqueda'' con ''reemplazar'' solo para la línea actual. El% se utiliza para buscar en todo el archivo. Para confirmar cada reemplazo, agregue interactivamente una ''c'' para confirmar:

:%s/search/replace/c

Confirmación interactiva reemplazando ''buscar'' con ''reemplazar'' para todo el archivo

En lugar del carácter%, puede usar un rango de números de línea (tenga en cuenta que el carácter ''^'' es un carácter de búsqueda especial para el inicio de línea) :

:14,20s/^/#/

Inserta un carácter ''#'' al comienzo de las líneas 14-20

Si desea utilizar otro carácter de comentario (como //), cambie el delimitador de comando:

:14,20s!^!//!

Inserta una secuencia de caracteres ''//'' al comienzo de las líneas 14-20

O siempre puedes escapar de los // caracteres como:

:14,20s/^//////

Inserta una secuencia de caracteres ''//'' al comienzo de las líneas 14-20

Si no ve números de línea en su editor, simplemente escriba lo siguiente

:set nu


Esto agrega # al comienzo de cada línea:

:%s/^/#/

Y la gente dejará de quejarse de tu falta de scripts para comentar correctamente.


Esto reemplaza el comienzo de cada línea con "//":

:%s!^!//!

Esto reemplaza el comienzo de cada línea seleccionada (use el modo visual para seleccionar) con "//":

:''<,''>s!^!//!

Tenga en cuenta que gv (en modo normal) restaura la última selección visual, esto es útil de vez en cuando.


Marque el área a comentar como un bloque visual ( <CV )

y hacer c#<ESC>p

  1. c hage a "#"
  2. ponerlo de nuevo

Si lo haces a menudo, define un atajo (ejemplo /q ) en tu .vimrc

:vmap /q c#<ESC>p


Otra forma más:

:''<,''>g/^/norm I//

/^/ es solo un patrón ficticio para coincidir con cada línea. norm permite ejecutar los comandos de modo normal que siguen. I// dice que se ingrese al modo de inserción mientras salta el cursor al principio de la línea, luego inserte el siguiente texto (dos barras).

:g suele ser útil para hacer algo complejo en varias líneas, donde es posible que desee saltar entre múltiples modos, eliminar o agregar líneas, mover el cursor, correr un montón de macros, etc. Y puede decirle que funcione solo en líneas que coinciden con un patrón.


Otra forma que podría ser más fácil para los recién llegados:

some█ code here

Coloque el cursor en la primera línea, por ejemplo, por

: 1 Entrar

y escriba lo siguiente para entrar en el modo de inserción y agregar su texto:

I / / Espacio

// █some code here

Presione Esc para volver al modo de comando y use el dígrafo:

j . j .

// some // code //█here

j es un comando de movimiento para bajar una línea y . repite el último comando de edición que hiciste.


Para comentar bloques de código, me gusta el complemento NERD Commenter .

Seleccione un texto:

Shift-V ...select the lines of text you want to comment....

Comentario:

,cc

Descomentar

,cu

O simplemente alternar el estado de comentario de una línea o bloque:

,c<space>


Puedo recomendar el complemento EnhCommentify .

p.ej. pon esto a tu vimrc

let maplocalleader='','' vmap <silent> <LocalLeader>c <Plug>VisualTraditional nmap <silent> <LocalLeader>c <Plug>Traditional let g:EnhCommentifyBindInInsert = ''No'' let g:EnhCommentifyMultiPartBlocks = ''Yes'' let g:EnhCommentifyPretty = ''Yes'' let g:EnhCommentifyRespectIndent = ''Yes'' let g:EnhCommentifyUseBlockIndent = ''Yes''

luego puede comentar / descomentar las líneas (seleccionadas) con '', c''


Si quieres ser súper elegante al respecto, pon esto en tu .vimrc:

vmap /c :s!^!//!<CR> vmap /u :s!^//!!<CR>

Luego, siempre que esté en modo visual, puede pulsar /c para omitir el bloque y /u para comentarlo. Por supuesto, puede cambiar esas combinaciones de teclas de acceso directo a lo que sea.


Y otra manera más:

  • Mover al principio de una línea.
  • entrar en el modo Visual Block ( CTRL - v )
  • seleccione las líneas que desee (subiendo / bajando con j / k , o saltando a una línea con [línea] G )
  • presiona I (eso es mayúscula)
  • escribe el (los) carácter (es) del comentario
  • presiona ESC

  • Presiona Esc para ingresar al ''modo de comando''
  • Usa Ctrl + V para entrar en el modo de bloqueo visual
  • Mover arriba / abajo para seleccionar las columnas de texto en las líneas que desea comentar.
  • Luego presione Mayús + i y escriba el texto que desea insertar.
  • Luego presione Esc , espere 1 segundo y el texto insertado aparecerá en cada línea.

Para obtener más información y leer, consulte este artículo relacionado en el wiki de vim .