답변:
내가 빠진 것이 아니라면, Vim은 이미 그렇게합니다. 마우스를 사용하거나 v
커서 를 입력 하고 이동 하여 일부 텍스트를 강조 표시 하면 화면 하단에
-시각-12
여기서 오른쪽의 숫자는 강조 표시된 문자의 수입니다. 선택이 단일 행에있는 경우에만 작동하고, 그렇지 않으면 행 수를 표시합니다.
또한 g Ctrl-G선택된 행 수, 단어 및 바이트 수를 표시하는 텍스트 및 유형의 일부 영역을 시각적으로 선택할 수 있습니다 .
set showcmd
하기 만하면 vimrc
됩니다.
Vim은 시각화 대상 및 방법에 따라 시각화 된 텍스트의 문자 수와 줄 수를 표시합니다 (vim 7.4는 2015 년 9 월에 패치 됨)
V will display line count
v$ will display character count
둘 이상의 라인을 시각화하면 라인 수만 표시합니다
g-CTRL-G displays 'byte count' which seems to be 'char count' +1 per line
v
선택 항목이 여러 줄에 걸쳐 있으면 일반 문자 조차도 문자 수에서 행 수로 전환됩니다. 그러나 g CTRL-G
일을 훌륭하게 수행합니다.
:function VisualLength()
: exe 'normal "xy'
: echo "Visual: " . strlen(@x) . "\n"
: exe 'normal gv'
:endfunction
:map ,q "xy:call VisualLength()<CR>
먼저 현재 선택을 잡아 당깁니다 (버퍼 x로)
: 그럼 당신은 그 버퍼의 길이를 표시 strlen(@x)
합니다 (이 - VISUAL - 우리가 줄 바꿈을 추가 할 수 있도록 상태 표시 줄에 표시가,이 모호)
이전 가시 범위를 강조 표시하십시오. gv
이것은 비주얼 모드가 라인, 문자 또는 블록 모드인지 여부를 고려하지 않지만 대부분의 경우 충분합니다.
스크린 샷에서 Windows에서 실행중인 것으로 보이 므로이 답변이 도움이되지 않을 수 있습니다. 하지만 다른 사람들에게는 ...
Vim의 미사용 (IMO) 기능은 외부 명령으로 많은 작업을 수행하는 것입니다.
이 경우 UNIX 계열 시스템 인 경우 wc
명령을 사용하여 이를 수행 할 수 있습니다 .
가장 간단한 방법은 (텍스트를 선택한 상태에서)를 입력하여 선택한 텍스트를 명령의 출력으로 바꾸는 것입니다.
:!wc
그런 다음 Enter 키를 누릅니다.
명령 줄에 다음과 같이 표시됩니다.
'<,'>!wc
정보를 읽은 후 u
시작 위치로 돌아 가기 위해 실행 취소 할 수 있습니다 .
참고 :이 처리는 전체 라인 에서만 수행 됩니다. 부분 라인을 원한다면 @ garyjohn 's g_CTRL-G
가 최선의 방법 이라고 생각 합니다.
대신 다음을 실행하여 실행 취소 할 필요가 없습니다.
:w !wc
그러면 선택한 행이 명령의 표준 입력에 "쓰기"되고 명령의 출력이 새로운 임시 버퍼에 표시되고 원본은 그대로 유지됩니다. 자세한 내용 :help :write_c
은 참조하십시오 .
참고 : /programming/1237780/vim-execute-shell-command-without-filtering 에서 :write_c
정보를 얻었습니다 .
이제 더 일반적으로 :
이 예제 wc
는 매우 단순하지만 이것이 어떻게 강력한 접근 방식인지 상상할 수 있습니다. UNIX에는 이미 사용 가능한 많은 텍스트 처리 명령이 있으며 Vimscript (yech)를 건드리지 않고도 Vim에서 매우 쉽게 사용할 수 있습니다.
또한 stdin / stdout을 다루는 모든 명령 줄 프로그램은 이제 터미널뿐만 아니라 Vim 내부에서도 이점을 얻을 수 있습니다.
예를 들어, vim 내부에서 실행 tidy
하여 json-format
찾고있는 파일을 더 읽기 쉽게 만듭니다.
Windows에서도 동일한 작업을 수행 할 수 있지만 Windows에는 이러한 풍부한 명령 세트가 내장되어 있지 않습니다. 그래도 GNUWin32 또는 이와 유사한 것을 설치 하여 이러한 이점을 얻을 수 있습니다 .
vimscript 내에서 프로그래밍 방식으로 선택이 한 줄로 제한되면 나에게 도움이되었습니다.
let amount = virtcol("'>") - virtcol("'<")
( 활성 상태 일 때 예상대로 작동하도록 virtcol(..)
대신 대신 사용 )col(..)
:set ve=all