vim: 검색 모드에서 for 루프 반복자 변수 사용

vim: 검색 모드에서 for 루프 반복자 변수 사용

vim 검색 모드에서 for 루프 반복자 변수를 사용하여 일련의 단어가 파일에 나타나는 횟수를 확인하려고 합니다. 지금까지 내가 한 일은 다음과 같습니다.

for i in range(1,40) | %s/SiTg//gn | endfor

i%s/S\iTg//gnfor 루프로 묶인 패턴에서 반복자 변수를 검색해야 합니다 . vim에서 어떻게 이를 달성할 수 있나요?

답변1

Vimscript는 명령줄에 입력한 Ex 명령과 똑같이 평가합니다 :. 에는 변수가 없으므로 ex지정할 수 없습니다. 대화형으로 명령을 입력할 때 이를 사용하여 <C-R>=변수 내용을 삽입할 수 있습니다.

:sleep <C-R>=timetowait<CR>m<CR>

...하지만 스크립트에서는 :execute사용해야 합니다. Ex 명령의 모든 리터럴 부분은 따옴표(작은따옴표 또는 큰따옴표)로 묶은 다음 변수와 연결해야 합니다.

execute 'sleep' timetowait . 'm'

i귀하의 예에서는 다음 명령에 변수를 넣고 싶습니다 :%s.

for i in range(1,40) | execute '%s/S' . i . 'Tg//gn' | endfor

답변2

다른 목적으로 루프를 사용 하지 않는 경우 for언제든지 정규식을 확장하여 전체 숫자 범위를 포괄할 수 있습니다.

:%s/S\([1-4]0\|[1-3]*[1-9]\)Tg//gn

답변3

다음과 같은 수정자를 사용할 수 있습니다 \=<subexpression>. ← 이는 모든 문자 앞에 s 값을 :s/a/\=g:integer."a"/g추가합니다 .ag:integer

관련 정보