vim
(공백 포함) 에서 강조 표시된 기호를 계산하는 방법이 있는지 궁금 합니다.
최신 정보
선택한 항목이 여러 행에 있으면 행 수를 표시합니다. 기호 개수가 필요합니다.
답변
내가 빠진 것이 아니라면, Vim은 이미 그렇게합니다. 마우스를 사용하거나 v
커서 를 입력 하고 이동 하여 일부 텍스트를 강조 표시 하면 화면 하단에
-시각-12
여기서 오른쪽의 숫자는 강조 표시된 문자의 수입니다. 선택이 단일 행에있는 경우에만 작동하고, 그렇지 않으면 행 수를 표시합니다.
또한 g Ctrl-G선택된 행 수, 단어 및 바이트 수를 표시하는 텍스트 및 유형의 일부 영역을 시각적으로 선택할 수 있습니다 .
답변
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
답변
: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