2008-09-12 6 views
21

Seleccionar una gran cantidad de texto que se extiende 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, usar el mouse? seleccionar y eliminar bloques de texto de pantallas múltiples o escribir, p. tres métodos grandes a otro archivo y luego eliminarlos para fines de prueba en Vim cuando se usa a través de putty/ssh donde no se puede usar el mouse?En Vim, ¿cuál es la mejor manera de seleccionar, eliminar o comentar grandes porciones de texto de pantallas múltiples?

Puedo arrastrar fácilmente hasta el final de la línea o tirar al final del bloque de código, pero si el texto se extiende sobre muchas pantallas, o tiene muchas líneas en blanco, Siento que mis 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 IDEs?

+0

Una adición a @ zigdon de respuesta: podría usar el complemento NERDCommenter para comentar el texto, de modo que si ha seleccionado visualmente el texto y este complemento instalado, use ', cc' para comentar el texto. Más asignaciones en ': h NERDComFunctionalitySummary'. – ZyX

Respuesta

23

Bueno, antes que nada, puede configurar vim para que funcione con el mouse, lo que le permitiría seleccionar el texto como lo haría en Eclipse.

También puede usar la selección Visual - v, de forma predeterminada. Una vez seleccionado, puede yank, cut, etc.

En lo que comentando el bloque, por lo general seleccionarlo con VISUAL, y luego hacer

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

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

+1

¿Cómo se invierten las líneas de comentario? –

+2

Bueno, puedes 'deshacer';) Pero si no, puedes hacer algo como ': s/^ # //' en las líneas seleccionadas. – zigdon

+4

también puede especificar el rango: ': 213,244s/^/# /' para comentar, luego revertir la operación para descomentar: ': 213,244s/^ # //' hecho! – brice

8

utiliza el comando bloque visual v (o V para líneas enteras y C - V para bloques rectangulares). En el modo de bloque visual, puede usar cualquier comando de movimiento, incluida la búsqueda; Uso} con frecuencia para saltar a la siguiente línea en blanco. Una vez que el bloque está marcado, puede: w a un archivo, eliminar, tirar, o lo que sea. Si ejecuta un comando y el bloque visual desaparece, vuelva a seleccionar el mismo bloque con gv. Ver: ayuda visual-change para más.

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 adapte a su idioma de elección.

2

Uso Shift +V ir en modo visual, entonces usted puede seleccionar líneas y borrar/cambiar ellos.

0

v ingresa al modo de bloque visual, donde puede seleccionar como cambiar en la mayoría de los editores comunes, luego puede hacer cualquier cosa que normalmente puede hacer con normal comandos (substitución: '<, '> s/^/#/a anteponer con un comentario, por ejemplo), donde' <,'> significa el bloque visual seleccionada en lugar de todo el texto

4

Prensa V (mayúsculas V.) y luego presione 40j para seleccionar 40 líneas y luego presione d para eliminarlas. O como @zigdon respondió, puede comentarlas.

+0

Esto elimina 41 líneas en total (la línea inicial y 40 debajo). –

4

El modo visual es la solución para su problema principal. 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 manera ordenada de comentar un bloque sin un plugin.Digamos que trabajas en Python y # es el personaje de comentarios. Haga una selección de bloque visual de la columna en la que desea que esté el signo hash, y escriba I # ESCAPE. Para ingresar a un modo de bloque visual, presione C-q en Windows o C-v en Linux.

19

Usar marcadores.

Ir a la parte superior del bloque de texto que desea borrar y entrar

ma 

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

luego ir al final del bloque y escriba lo siguiente:

:'a,.d 

Introducción ma ha establecido marcador a para el carácter bajo el cursor.

El comando que ha introducido después de trasladarse a la parte inferior del bloque de texto dice "de la línea que contiene el carácter descrito por marcador de a ('un) a la línea actual (.) d elete. "

Este tipo de cosas se pueden usar también 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.B.'a (apóstrofo-a) se refiere a la línea que contiene el carácter marcado por a. `` a (backtick-a) refers to the character marked by a`.

3

O puede que quiera dar a este script una oportunidad ...

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

+0

NERDCommenter es mejor: tiene más características, la última versión lanzada el 30.03.2009 (21/02/2008 para enhancedcommentify y aún para vim6), y está disponible en el repositorio de Gentoo (pero enhancedcommentify también está disponible). – ZyX

16

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

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

+0

¡Guau, gracias! Una respuesta a Esc-x comment-region – clintm

+0

Tenga en cuenta que el vim predeterminado instalado con Ubuntu 14.04 (instalado como 'vi') no incluye la función' visualextra', por lo que la inserción de bloque no funcionará allí. 'sudo apt-get install vim' trae una versión más completa, en la cual' visualextra' está activado. Puede verificar el resultado de 'vim --version' para ver la lista completa de funciones activadas. –

3

Mi bloque de comentario técnica:

Ctrl +V para iniciar el modo visual en forma de bloques.

Haga su selección.

Con la selección aún activa, Shift +I. Esto lo coloca en el modo de inserción de columnas.

Escriba que comente los caracteres '#' o '//' o lo que sea.

ESC.

1

Mi método usual para comentar a cabo 40 líneas sería poner el cursor en la primera línea e introduzca el comando:

:., + 40/^/#/

(Por aquí a través de 40 líneas adelante, sustituir comienzo de línea con hash, espacio) Parece un poco más largo que algunos otros métodos sugeridos, pero me gusta hacer cosas con el teclado en lugar del mouse.

0

marcas serían los mb simples donde quieres comenzar y me, donde U quiere terminar una vez hecho esto se puede hacer casi cualquier cosa que desee

:'b,'ed 

elimina a partir del MP b al marcador de e

comentando 40 líneas que se pueden hacer en el modo visual

V40j:s/^/#/ 

comentarán a cabo 40 líneas de donde u empezar la secuencia

0

Usted debe ser consciente de la orden de modo normal [count] CTRL - D. Cambia opcionalmente la opción 'scroll' de 10 a [count], y luego desplaza hacia abajo esa cantidad de líneas. Al presionar CTRL - D nuevamente se desplazará hacia abajo por las mismas líneas nuevamente.

Así que trate de 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-T funciona de la misma manera pero se desplaza hacia arriba.

2

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

:20,200d 

Para mover las líneas 20 a la 200 a la línea 300, donde se puede utilizar:

:20,200m300 

Y así sucesivamente.

2

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

EnhancedCommentify

NERD Commenter

Me encuentro con NERD más en estos días, pero he utilizado EnhancedCommentify durante años.

+0

¿Qué te hizo cambiar de la primera a la segunda? –

+0

NERD parece estar desarrollado más activamente, pero en realidad me gusta el comportamiento de EnhancedCommentify mejor. –

+0

Con un nombre como NERD ... tienes que imaginar que alguien lo está cuidando. – ojblass

1

¿La primera respuesta no es correcta actualmente? crear un comentario en la selección de prensa ':' y el comando tipo : '<, '> s/^/#/g

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

Cuestiones relacionadas