Vim/gVim에서 최대 열/문자 수가 있는 줄을 찾는 방법은 무엇입니까?

Vim/gVim에서 최대 열/문자 수가 있는 줄을 찾는 방법은 무엇입니까?

저는 현재 Windows XP에서 gVim을 사용하고 있으며 핵심 질문에 대한 후속 조치가 2개 있습니다.

가장 많은 문자가 있는 줄을 찾는 가장 좋은 방법은 무엇입니까?

내 현재 방법:나는 정규식 검색을 사용 하고 단 하나의 일치 항목을 얻을 때까지 :/^\(\p\)\{#number#,}$정수를 계속 늘립니다 . #number#내 파일의 경우, 이전에 생각했던 916,657자가 아닌 81K자만 포함된 줄입니다. 커서가 해당 줄에 있을 때 키를 누르면 g + Ctrl+g81K의 열 수가 표시되기 때문에 이 사실을 알고 있습니다 .

후속 조치 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

Cam은 첫 번째 질문에 대해서는 언급하지 않았지만 파일 로드 메시지의 두 번째 숫자는 파일의 총 문자 수입니다.

답변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

관련 정보