En Vim, ¿cuál es la mejor manera de seleccionar, eliminar o comentar grandes porciones de texto multipantalla?

StackOverflow https://stackoverflow.com/questions/58584

  •  09-06-2019
  •  | 
  •  

Pregunta

Seleccionar una gran cantidad de texto que se extienda a muchas pantallas en un IDE como Eclipse es bastante fácil ya que puedes usar el mouse, pero ¿cuál es la mejor manera de, por ejemplo?seleccione y elimine bloques de texto multipantalla o escriba, p.¿Tres métodos grandes a otro archivo y luego eliminarlos para fines de prueba en Vim cuando lo usa a través de PuTTY/SSH donde no puede usar el mouse?

Puedo tirar fácilmente hasta el final de la línea o tirar hasta el final del bloque de código, pero si el texto se extiende a muchas pantallas o tiene muchas líneas en blanco, siento que mi Las manos están atadas en Vim.¿Alguna solución?

Y una pregunta relacionada:¿Hay alguna manera de seleccionar de alguna manera 40 líneas y luego comentarlas todas (con "#" o "//"), como es común en la mayoría de los IDE?

¿Fue útil?

Solución

Bueno, antes que nada, puedes configurar vim trabajar con el mouse, lo que le permitiría seleccionar texto tal como lo haría en Eclipse.

También puede utilizar la selección visual: v, por defecto.Una vez seleccionado, podrás yank, cut, etc.

En cuanto a comentar el bloque, normalmente lo selecciono con VISUAL, entonces hazlo

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

Reemplazar el comienzo de cada línea con un #.(El '< y '> Los marcadores son el inicio y el de la selección visual.

Otros consejos

Utilice marcadores.

Vaya a la parte superior del bloque de texto que desea eliminar e ingrese

ma

en cualquier lugar de esa línea.No hay necesidad de dos puntos.

Luego vaya al final del bloque e ingrese lo siguiente:

:'a,.d

Entrando ma ha puesto marcador a para el carácter debajo del cursor.

El comando que ingresó después de pasar al final del bloque de texto dice "de la línea que contiene el carácter descrito por el marcador a ('a) a la línea actual (.) deliminar."

Este tipo de cosas también se pueden utilizar para otras cosas.

:'a,.ya b     - yank from 'a to current line and put in buffer 'b'
:'a,.ya B     - yank from 'a to current line and append to buffer 'b'
:'a,.s/^/#/   - from 'a to current line, substitute '#' for line begin
(i.e. comment out in Perl)
:'s,.s#^#//#  - from 'a to current line, substitute '//' for line begin
(i.e. comment out in C++)

NÓTESE BIEN. 'a (apóstrofo-a) se refiere a la línea que contiene el carácter marcado por a.``un(backtick-a) refers to the character marked byun`.

Para insertar comentarios seleccione los caracteres iniciales de las líneas usando CONTROL-v (visual en bloques, no visual en caracteres 'v' o visual en líneas 'V').Luego vaya al modo de inserción usando 'I', ingrese su(s) carácter(es) de comentario en la primera línea (por ejemplo '#') y finalmente escape al modo normal usando 'Esc'.¡Voilá!

Para eliminar los comentarios, use blockwise-visual para seleccionar los comentarios y simplemente elimínelos usando 'X'.

Utilice el comando de bloque visual v (o V para líneas completas y C-V para bloques rectangulares).Mientras está en el modo de bloqueo visual, puede usar cualquier comando de movimiento, incluida la búsqueda;Utilizo } con frecuencia para pasar a la siguiente línea en blanco.Una vez que el bloque está marcado, puede colocarlo en un archivo, eliminarlo, extraerlo o lo que sea.Si ejecuta un comando y el bloque visual desaparece, vuelva a seleccionar el mismo bloque con gv.Consulte :help visual-change para obtener más información.

Creo que hay scripts específicos del idioma que vienen con vim que hacen cosas como comentar bloques de código de una manera que se ajuste al idioma de su elección.

Prensa V (V mayúscula) y luego presione 40j para seleccionar 40 líneas y luego presione d para eliminarlos.O como respondió @zigdon, puedes comentarlos.

El modo visual es la solución a tu principal problema.En cuanto a comentar secciones de código, hay muchos complementos para eso en vim.org; estoy usando tComment.vim en este momento.

También hay una forma sencilla de comentar un bloque sin un complemento.Digamos que trabajas en Python y # es el carácter de comentario.Haga una selección de bloque visual de la columna en la que desea que esté el signo de almohadilla y escriba I#ESCAPE.Para ingresar al modo de bloqueo visual, presione C-q en Windows o C-v en Linux.

O quizás quieras probar este script...

http://www.vim.org/scripts/script.php?script_id=23

Mi técnica de bloque de comentarios:

Control+V para iniciar el modo visual en bloques.

Haz tu selección.

Con la selección aún activa, Cambio+I.Esto lo puso en modo de inserción de columnas.

Escriba los caracteres de comentario '#' o '//' o lo que sea.

ESC.

Si desea realizar una acción en un rango de líneas y conoce los números de línea, puede colocar el rango en la línea de comando.Por ejemplo, para eliminar las líneas 20 a 200 puedes hacer:

:20,200d

Para mover las líneas 20 a 200 hasta donde está la línea 300, puede usar:

:20,200m300

Etcétera.

Para comentar líneas, sugeriría uno de estos complementos:

MejoradoComentar

Comentarista nerd

Últimamente uso más NERD, pero he usado EnhancedCommentify durante años.

Usar Cambio+V para ir al modo visual, luego puede seleccionar líneas y eliminarlas/cambiarlas.

Mi método habitual para comentar 40 líneas sería colocar el cursor en la primera línea e ingresar el comando:

:.,+40s/^/# /

(Aquí aquí a través de 40 líneas hacia adelante, sustituya el inicio de línea con el hash, el espacio) parece un poco más largo de lo que sugirió otros métodos, pero me gusta hacer cosas con el teclado en lugar del mouse.

¿La primera respuesta actualmente no es del todo correcta?Para comentar Selection Press ':' y tipo de comando: '<,'> s/^/#/g

('<, '> - estará allí automáticamente)

Debes tener en cuenta el comando del modo normal [count]CONTROL-D.Opcionalmente, cambia la opción 'desplazamiento' de 10 a [recuento] y luego se desplaza hacia abajo tantas líneas.Prensado CONTROL-D nuevamente se desplazará hacia abajo en las mismas líneas nuevamente.

Así que intenta entrar

V     "visual line selection mode
30    "optionally set scroll value to 30
CTRL-D  "jump down a screen, repeated as necessary
y      " yank your selection

CTRL-U funciona de la misma manera pero se desplaza hacia arriba.

v ingresa al modo de bloque visual, donde puede seleccionar como con mayúsculas en los editores más comunes, luego puede hacer cualquier cosa que normalmente puede hacer con comandos normales (sustitución :'<,'>s/^/#/ para anteponer un comentario , por ejemplo) donde '<,'> significa el bloque visual seleccionado en lugar de todo el texto.

las marcas serían lo más simple megabyte donde quieres empezar y a mí donde quieres terminar una vez hecho esto puedes hacer prácticamente cualquier cosa que quieras

:'b,'ed

elimina del marcador b al marcador mi

comentando 40 líneas que puedes hacer en el modo visual

V40j:s/^/#/

comentará 40 líneas desde donde comienzas la secuencia

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top