Vim 스크립트 : 매핑에서 스크립트 로컬 변수를 참조 할 수 있습니까?


5

<SID>스크립트 로컬 변수를 사용하여 스크립트 로컬 함수를 참조 할 수 있지만 스크립트 로컬 변수는 어떻습니까? 나는 다음을 시도했지만 타격 <c-space>이 실패합니다.

let s:testVar = "foo"
function! s:GetTestVar()
  return s:testVar
endfunction

nnoremap <space> :echo <SID>GetTestVar()<cr>
nnoremap <c-space> :echo <SID>testVar<cr>

접근 자 함수 (위와 같이)를 작성하여이 문제를 해결할 수 있지만 때로는 직접 참조하는 것이 좋습니다.

답변:


6

아니요, 스크립트 로컬 변수는 실제로 스크립트 전용입니다. 액세서 함수를 실제로 작성해야합니다.

플러그인에서는 함수 (그리고 스크립트의 상태 변수와 함께)를 자동로드 스크립트로 분리해야하므로 플러그인 / 스크립트 ( 플러그인 스크립트에 정의 )는 다른 스크립트를 참조 해야하기 때문에 문제가되지 않습니다. .


2

나는 원래 이것을 언급하고 싶었지만 50 명의 담당자가 필요하다. 여기 작은 제안이 있으며 목표가되기를 바랍니다.

사용 가능 (var이 정의 된 스크립트 내에서)

exe "nnoremap <c-space> :echo ".s:testVar."<cr>"

내 .vimrc에 정의 된 매핑에서 s : var 경로 삽입에 이것을 사용하고 있습니다. 요점을 놓치면 알려주세요.


이것은 행이 실행될 때 변수의 값을 캡처하고 매핑이 트리거 될 때 "live"값을 사용한다는 점에 유의하십시오.
Kevin Cox
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.