¿Cómo encontrar la línea con el número máximo de columnas/caracteres en Vim/gVim?

¿Cómo encontrar la línea con el número máximo de columnas/caracteres en Vim/gVim?

Actualmente estoy usando gVim en Windows XP y tengo 2 seguimientos a mi pregunta principal:

¿Cuál es el mejor método para encontrar la línea con más caracteres?

Mi método actual:Utilizo la búsqueda de expresiones regulares :/^\(\p\)\{#number#,}$) y sigo aumentando el número entero #number#hasta que obtengo una sola coincidencia. En el caso de mi archivo, es una línea de sólo 81.000 caracteres, no 916.657 como pensaba anteriormente. Lo sé porque cuando el cursor está en esa línea presiono g + Ctrl+gy obtengo el recuento de columnas de 81K.

Seguimiento 1)¿La pregunta es "What is the best method of finding the line with the most columns?"la misma que la número 2 anterior?

Seguimiento 2)¿Qué significa el segundo número cuando abro un archivo y veo la siguiente línea en la parte inferior de la pantalla?

ingrese la descripción de la imagen aquí

Interpreto que esto significa que el archivo tiene 14.871 líneas y al menos una fila tiene 916.657 columnas. Comprobé que el archivo tiene 14.871 líneas, pero no he podido entender el propósito de la segunda (916K).

Respuesta1

El segundo número es el recuento total de caracteres en todo el archivo. Si lo haces:

$ wc -l -c filename

Deberías ver los mismos dos números (líneas y caracteres totales). De hecho, puedes hacer:

:!wc -l -c %

Aquí hay un complemento llamadofiltro de texto(descargar) que incluye una función para encontrar la línea más larga.

O puedes usar esto para encontrar la longitud de la línea más larga:

:echo max(map(range(1, line('$')), "col([v:val, '$'])")) - 1

entonces puedes usar ese número de esta manera:

/^.\{248\}$

Respuesta2

Debe haber una manera mejor, pero lo siguiente también servirá:

%s/./a/g         "Replace everything with 'a's
sort!            "Sort by column length
ggy$             "Go to first line (longest) and copy it
u                "Undo the sorting
/<c-r>"          "Search for the longest line
mm               "Mark it 'm'
u                "Undo the replace
'm               "Go to the mark - there!

Respuesta3

No hablo de la primera pregunta, pero el segundo número en el mensaje de carga del archivo es el número total de caracteres en el archivo.

Respuesta4

No tan centrado en vim y similar a otras respuestas, pero tal vez más intuitivo para algunas personas. Esto supone que está de acuerdo con llamar a algunos programas externos desde vim.

Tengo lo siguiente en el archivo test_file:

hello world
helloooooooooooooo world !!!
yo, world!
helloooOoooOooooOo World ! !

El wccomando a veces tiene una -Lopción que imprime el tamaño de la línea más larga. 28 test_filees el resultado de mi ejemplo.

Puede imprimir estas líneas de 28 caracteres (y sus números de línea) con grep -nP ".{28}" test_file.

2:helloooooooooooooo world !!!
4:helloooOoooOooooOo World ! !

Podrías analizar la wcsalida con cut. Poniéndolo todo junto y pegando un comando a otro, es:

grep -nP ".{$(wc -L test_file | cut -f 1 -d ' ')}" test_file

información relacionada