Vim: cuenta las líneas en el rango seleccionado

82

Quiero contar líneas en un rango, no importa qué rango, pero que sea, digamos, un bloque visual. Cuál es la forma más corta de hacerlo. Todo lo que me viene a la mente es algo como: '<,'>s/.//n pero no creo que sea el camino más corto.

Entonces, ¿alguien puede darme una pista? Gracias por adelantado.

shabunc
fuente

Respuestas:

139

En modo visual, presione gC-g

Salida típica:

Selected 7 of 22 Lines; 8 of 32 Words; 201 of 491 Chars; 201 of 497 Bytes-- VISUAL LINE --


Fuente : :he count-items( visible como: :heTabTab... )

sehe
fuente
¡Excelente! Gracias por este consejo, en cuanto pasen 10 minutos, marcaré esto como una respuesta) Pero es interesante, sin embargo, hay una función en vim. Estoy bastante seguro de que debería haber una función.
shabunc
@shabunc: ¿qué quieres decir con "hay una función en vim"? ¿Quieres decir algo que puedas :call? Tu pregunta no mencionó eso.
Laurence Gonsalves
funciona solo en el sentido de otras funciones integradas ( :h functions;)
shabunc
1
@shabunc Entonces, "sí", entonces. No mencionaste que querías una función en tu pregunta. No creo que exista una función incorporada para contar la cantidad de líneas en un rango, pero podría definir la suya con bastante facilidad con dos llamadas a getpos()(que puede aceptar una marca como entrada y devuelve la posición, incluido el número de línea) y un poco de resta.
Laurence Gonsalves
1
@shabunc: Lo más cercano que puedo encontrar es :perl $curbuf->Count(devuelve el número de líneas)
sehe
22

Establezca la opción showcmd( :h 'sc'), y nunca necesitará escribir nada para saber cuántas líneas están seleccionadas; al principio, como olvidé que configuré esta opción, no entendí el punto de su pregunta. ^^ '

De lo contrario, si desea obtener ese número mediante programación, es simplemente:

:echo line("'>") - line("'<") + 1

Desde dentro de una función de rango, también se puede obtener mediante a:lastline-a:firstline+1. ( :h function-range-example)

Luc Hermitte
fuente
8

'<,'>s///nes un carácter más corto. :-)

Si solo quiero saber el número de líneas en una selección visual, por lo general, simplemente lo tiro (golpeo y). Dirá "5 líneas arrancadas" o "bloque de 5 líneas arrancadas" según el tipo de selección.

Laurence Gonsalves
fuente
2
yo también usualmente tirando para ese propósito. Y hoy de repente me di cuenta de que es el momento de aprender algo nuevo)))
shabunc