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

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

какой лучший способ найти строку с самых персонажей?

мой текущий метод: я использую regex search :/^(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
задан drapkin11
09.03.2023 6:51 Количество просмотров материала 3101
Распечатать страницу

4 ответа

второе число-общее количество символов во всем файле. If you do:

$ wc -l -c filename

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

:!wc -l -c %

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

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

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

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

/^.\{248\}$
3
отвечен Dennis Williamson 2023-03-10 14:39

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

%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
отвечен Eelvex 2023-03-10 16:56

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

1
отвечен geekosaur 2023-03-10 19:13

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

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
отвечен garyjohn 2023-03-10 21:30

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх