2010-03-17 65 views
14

¿se puede usar vim o vim para comentar o sangrar al mismo tiempo una serie de líneas? Por ejemplo:Aplicar sangría o comentar varias líneas de texto con vi

for item in Lista: 
    ind = int(floor(1.0*(item-lmin)/width)) 
    if ind==nintervals: 
     ind=ind-1 
    print item,ind 

comentario a:

#for item in Lista: 
    #ind = int(floor(1.0*(item-lmin)/width)) 
    #if ind==nintervals: 
     #ind=ind-1 
    #print item,ind 

o sangrar a:

for item in Lista: 
     ind = int(floor(1.0*(item-lmin)/width)) 
     if ind==nintervals: 
      ind=ind-1 
     print item,ind 

P. D. ¿Es relevante la diferencia entre VI y VIM?

+1

La diferencia entre vi y vim se trata aquí: http://stackoverflow.com/questions/1159206/difference-between-vi-vim Solo recuerde, en estos días (a menos que esté trabajando en una vieja y loca plataforma) tienes vim, no vi. Vim generalmente se instala con vi aliased a vim, y la opción 'compatible' hace que sea" vi compatible ", lo que básicamente significa desactivar todas las características buenas agregadas en vim. – Cascabel

+1

Más sobre las líneas de sangrado en Vim aquí: http: // stackoverflow.com/questions/2332340 –

Respuesta

35

aquí es otra manera.

  1. líneas de bloqueo con ctrl+v
  2. Insertar comentario signo (//) con I
  3. de escape con ESC

la tipificación clave es

ctrl+vjjjjI//ESC

+1

Ahora, ¿puede decirnos cómo descomentarlo en una instancia posterior ... –

+2

No importa, lo encontré .. 'ctrl + v' ->' l' -> 'd' Si hay un mejor yo ' me gusta saber –

+4

Cuando presiono I (i capital), lo hago en modo de inserción en la primera línea del bloque solamente. – Syl

0

coloque el cursor en la primera línea, contar el número de líneas que debe sangría, en el ejemplo anterior es 5, entonces para almohadilla (#) tipo :.,.+5%s/^\([ <tab>]*\)/#\1/<enter> o para una muesca pestaña, :.,.+5%s/^\([ <tab>]*\)/<tab>\1/<enter>, < pestaña > y <enter> son las teclas tab y enter.

Probablemente haya formas más elegantes de hacerlo, pero algo como esto es algo rápido y sucio.

14

Para comentar, pulse mayúscula V para acceder al modo visual line, seleccione todas las líneas, a continuación, pulse : para entrar en modo de comando y utilice el comando (tenga en cuenta que VIM ya incluyen los '<,'> marcas para usted):

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

Si prefiere marcas de control cerca del texto, y no cerca del margen izquierdo, el comando es:

:'<,'>s/^\(\s*\)/\1#/ 

Para guión, seleccione el bl ock lo mismo, luego escriba > para sangrar, < para desincrivar.

+1

Por cierto, para agregar '//' en lugar de '#' al principio de la línea, solo necesita reemplazar el '#' por '\/\ /' como este ': '<,'> s/^/\/\ // 'después de que hiciste' Ctrl + v' (o 'V') y': 'en las líneas que quieres comentar bloquean. – Armfoot

0

Para comentar, puede usar la selección VISUAL BLOCK (Ctrl-V) y seleccionar el comienzo de las líneas, luego presionar Shift-I y escribir una #. Después de presionar Esc todas las líneas obtienen el #.

0

Mi solución habitual es:

<ESC> 
<q><a> => start a macro and save it as macro a 
<^> => to get to the start of the line 
<i> => insert mode 
<#> => Add the # 
<ESC> => End insert mode 
<down> => Move to the next line 
<q> => End macro 

Entonces una vez:

<[at]><a> => repeat macro a 

Entonces sólo tiene que repetir < [at]> < [at]> (Repetir el último ejecutado macro) hasta que se comentan todas las líneas . Solo puede mantener < [at]> y permitir que el teclado repita el resto.

BTW: ¿Cómo se escribe un signo [at] aquí sin stackoverflow convirtiéndolo en "> blockquote"?

Para guión:

[shift] + [v] => line select mode 
[down] => until all lines to indent are selected 

entonces:

[>] => indent once 

o:

[2..x][>] => indent 2..x levels 
1

seleccionar las líneas con el modo visual.

  • Para sangrar una vez que escriba >> o << de sangría derecha o izquierda, respectivamente. Para sangrar n veces escriba n>> o n<<.

  • Para comentar hacer sustituir el principio de la línea con el comentario:

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

'<,'> medios "desde el principio de la selección hasta el final.

s/^/#/ sustituye al comienzo de cada línea en el rango con #, suponiendo # hace una línea en un comentario.

4

tipo :set number. tome nota del número de línea de inicio y final del bloque que desea comentar. y luego hacer una sustitución rango de direcciones, por ejemplo

:12,17s/^/#

+0

O use 'V' en el modo normal para seleccionar una línea visual, use 'j/k' para seleccionar múltiples líneas, y use ': <,> s/^/#' en modo ex. EDITAR: Oops, acabo de ver que esto ya se menciona en una respuesta anterior. –

+0

Esta fue la única solución que pude obtener para trabajar en Ubuntu 16.04. Las opciones ctrl + v fallarían después del cambio i. – Matt

2

Sé que hay un trillón de respuestas aquí ya que explican cómo utilizar > y < para el sangrado, así que no me voy a molestar con eso. Con respecto a los comentarios, sin embargo, si bien puedes hacerlo rápido y sucio con un inserto de bloque o una sustitución, puedes hacerlo mejor con el NERD Commenter plugin. Proporciona comandos para comentar y descomentar de varias maneras, sabe qué símbolo de comentario insertar según la sintaxis, y puede hacer comentarios bastante multilínea si el idioma los admite.

2

Muchas respuestas aquí, todas con un tema. La mejor manera de hacerlo depende realmente del contexto (porque el contexto determina el método de navegación más fácil), así que haré algunas suposiciones sobre el contexto. Si la sección que desea sangrar o comentario es un solo párrafo (por ejemplo, desea sangrar o comenta todo desde el cursor hasta la siguiente línea en blanco), puede sangrar con:

 
>) 

Si el cursor está no en el principio del párrafo, pero la sección que desea sangrar es un solo párrafo y el cursor está en el medio, utilizar

 
>ip 

por último, supongamos que desea sangrar un bloque de código delimitado por {} , y el cursor está en el medio de ese bloque. Utilice

 
>i{ 

a comentar, en cada caso, basta con sustituir el > con v y usar los comandos anteriores para hacer una selección de bloques, y luego hacer un texto en lugar de como s/^/# /.

La clave son los comandos de navegación. Lo recomiendo

 
:help v_a 
3

Similar a la respuesta aceptada, pero es más fácil para los bloques o apartados:

  1. líneas de bloqueo: Ctrl + V
  2. Seleccionar párrafo: }
  3. modo de
  4. Insertar: I (en mayúsculas i)
  5. Escriba el carácter para insertar: # (con el espacio después del carácter, sin Enter)
  6. Prensa: ESC

Esto debe de auto completar el personaje en todo el bloque seleccionado. Básicamente, el diference con la respuesta aceptada es que en lugar de utilizar j a bajar línea por línea utiliza } para seleccionar todo el párrafo (o puede utilizar G para el final del archivo, por ej

versión corta:.

Ctrl + V + } + I + # + ESC

0

Si está utilizando Python (u otros idiomas que utilizan # como comentario), una forma más rápida para comentar varias líneas sería:

  1. Ingrese al modo de bloque visual (Ctrl+v) desde el inicio de la línea.
  2. Baje según sea necesario (j varias veces).
  3. Reemplace el espacio con # presionando r y luego #.

Para descomentar, haga lo mismo pero para el paso tres, reemplácelo por espacio.

Cuestiones relacionadas