VIM에서 강조 표시된 문자열 길이 계산 vim(공백 포함)

vim(공백 포함) 에서 강조 표시된 기호를 계산하는 방법이 있는지 궁금 합니다.

최신 정보

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>
  1. 먼저 현재 선택을 잡아 당깁니다 (버퍼 x로)

  2. : 그럼 당신은 그 버퍼의 길이를 표시 strlen(@x)
    합니다 (이 – VISUAL – 우리가 줄 바꿈을 추가 할 수 있도록 상태 표시 줄에 표시가,이 모호)

  3. 이전 가시 범위를 강조 표시하십시오. 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