Как найти строку с максимальным количеством столбцов/символов в Vim/gVim?

Как найти строку с максимальным количеством столбцов/символов в Vim/gVim?

В настоящее время я использую gVim на Windows XP, и у меня есть два дополнительных вопроса к моему основному вопросу:

Какой лучший способ найти строку с наибольшим количеством символов?

Мой текущий метод:Я использую поиск по регулярным выражениям :/^\(\p\)\{#number#,}$), и я продолжаю увеличивать целое число, #number#пока не получу только одно совпадение. В случае моего файла это строка всего из 81 тыс. символов, а не 916 657, как я думал раньше. Я знаю это, потому что когда курсор находится на этой строке, я нажимаю g + Ctrl+gи получаю количество столбцов 81 тыс.

Продолжение 1)Вопрос "What is the best method of finding the line with the most columns?"тот же, что и в пункте 2 выше?

Продолжение 2)Что означает вторая цифра, когда я открываю файл и вижу следующую строку внизу экрана:

введите описание изображения здесь

Я интерпретирую это так, что файл содержит 14 871 строку, и по крайней мере одна строка содержит 916 657 столбцов. Я проверил, что файл содержит 14 871 строку, но я не смог понять назначение второй (916K).

решение1

Второе число — общее количество символов во всем файле. Если вы это сделаете:

$ wc -l -c filename

вы должны увидеть те же два числа (строки и общее количество символов). Фактически, вы можете сделать:

:!wc -l -c %

Вот плагин, который называетсятекстовый фильтр(скачать), который включает функцию поиска самой длинной строки.

Или вы можете использовать это, чтобы найти длину самой длинной строки:

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

то вы можете использовать это число вот так:

/^.\{248\}$

решение2

Должен быть способ получше, но следующий тоже подойдет:

%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!

решение3

Не могу ответить на первый вопрос, но второе число в сообщении о загрузке файла — это общее количество символов в файле.

решение4

Не так ориентирован на vim и похож на некоторые другие ответы, но, возможно, более интуитивно понятен для некоторых людей. Это предполагает, что вы не против вызова некоторых внешних программ из vim.

У меня в файле есть следующее test_file:

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

wcИногда команда имеет опцию -L, которая выводит размер самой длинной строки. 28 test_fileЭто вывод для моего примера.

Вы можете распечатать эти 28 строк символов (и их номера строк) с помощью grep -nP ".{28}" test_file.

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

Вы можете проанализировать wcвывод с помощью cut. Собрав все вместе и вставив одну команду в другую, получим:

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

Связанный контент