이것이 가능한 방법은 순수한 vimscript 방식과 wc
방법입니다.
순수한 Vim 방식
search and replace 명령을 사용하여이를 수행 할 수 있습니다. 예를 들면 다음과 같습니다.
:%s/\<\w\{-}\>//gn
이것이하는 것은 주어진 패턴을 다른 것으로 바꾸는 대신 패턴의 발생 횟수 만 계산합니다. 이것은 n
플래그 때문입니다 . 특정 섹션 (이 경우 5-15 행)의 단어를 세려면 다음과 같이 할 수 있습니다.
:5,15s/\<\w\{-}\>//gn
따라서 선택 내용을 레지스터에 넣을 필요가 없습니다. 대신 사용할 수있는 5-15
항목에 대한 더 많은 가능성을 보려면 의 도움말 항목을 읽으십시오 cmdline-ranges
. 이 작업을 자주 수행하려면 매핑 (또는 명령)을 작성하는 것이 좋습니다. 또한 hlsearch
활성화 한 경우 :nohlsearch
나중에 강조 표시를 지우 려면 실행해야 할 수도 있습니다 .
wc
방법
같은 일을 할 수 있습니다 wc
. 명령으로 cmdline-ranges
영역을 선택하는 데 사용할 수있는 것과 같은 방법 :s
으로 외부 명령과 함께 영역을 사용할 수 있습니다. 예를 들면 다음과 같습니다.
:5,15!wc -w
wc
명령을 통해 5-15 행을 실행합니다 . 이것의 단점은 해당 행 범위를 명령 출력으로 대체한다는 것입니다. 을 눌러이 변경을 취소 할 수 있습니다 u
. 또한 vimscript 솔루션은 다른 언어에서는 작동 \w
하지 않을 수 있습니다. 다른 언어에서는 일반적으로 단어 문자와 일치하지 않기 때문 입니다. wc
이보다 더 잘 할 수 있습니다 \w
. 또한이 작업을보다 빠르게 수행 할 수있는 멋진 명령이 있습니다.
command -range=% -addr=lines WordCount execute '<count>!wc -w' | .y a | undo | echo @a
이것은 a
레지스터를 방해합니다 .
노트
이것은 g<C-g>
키 조합으로 시각적 모드에서 달성 될 수있는 것으로 보인다 . 이에 대한 설명은 Carpetsmoker의 답변을 참조하십시오.