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

Я в настоящее время использую gVim на Windows XP, и у меня есть 2 продолжения моего базового вопроса:

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

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

Продолжение 1) Является вопросом "What is the best method of finding the line with the most columns?" то же как № 2 выше?

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

enter image description here

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

2
задан 09.03.2011, 21:04

4 ответа

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

$ wc -l -c filename

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

:!wc -l -c %

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

Или можно использовать это для нахождения длины самой длинной строки:

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

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

/^.\{248\}$
3
ответ дан 08.12.2019, 04:57

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

%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
ответ дан 08.12.2019, 04:57

Cam't говорят с первым вопросом, но что второе число в сообщении загрузки файла является общим количеством символов в файле.

1
ответ дан 08.12.2019, 04:57

Вот функция, которая делает это.

function MaxLine()
    let maxcol = 0
    let lnum = 1
    while lnum <= line("$")
        call cursor(lnum, 0)
        if col("$") > maxcol
            let maxcol = col("$")
            let maxline = lnum
        endif
        let lnum += 1
    endwhile
    echo "Line" maxline "has" maxcol - 1 "characters"
endfunction

Можно выполнить его с

:call MaxLine()

или определите команду или отображающийся для вызова его.

Обратите внимание, что нахождение строки с самыми фактическими столбцами совпадает со строкой с большинством символов. Это не может совпасть со строкой с большинством байтов. Если Вы хотите найти строку с большинством виртуальных столбцов, заменой col("$") с virtcol("$").

1
ответ дан 08.12.2019, 04:57

Теги

Похожие вопросы