'정상적인'명령 표현에 변수를 사용하는 방법은 무엇입니까?


13

normal!vimscript 를 통해 무언가를 실행할 때 어떻게 변수를 사용할 수 있습니까?

예:

function! MyFunction(someArg)
   normal! (a:someArg)l
endfunction

커서 someArg단계가 오른쪽으로 이동해야합니다 .


4
당신은 사용해야합니다exe "norm!" variable
Christian Brabandt

답변:


21

execute함수는 문자열을 인수로 사용하여 문자열을 확장하고 일반 ex 명령으로 실행합니다. 따라서 다음을 수행 할 수 있습니다.

function! MyFunction(someArg) 
    execute "normal! ". a:someArg. "l" 
endfunction

.CONCATENATE 스트링 표준 vim 스크립트 연산자이다.

execute로 단축 할 수 있습니다 exe.

보다 :h :execute


편집 @Christian Brabandt의 의견에 대한 점을 a와 연결에 대해 추가합니다 ..

의사는 말합니다 :

사이에 공백이있는 여러 인수가 연결됩니다. 추가 공간을 피하려면 "."를 사용하십시오. 문자열을 하나의 인수로 연결하는 연산자입니다.

따라서 명령은 다음과 같습니다.

execute "normal!" a:someArg . "l"

실행 된 명령은 다음과 같습니다.

normal! 2l

8
'.'이 필요하지 않습니다. exe는 공백없이 문자열을 연결합니다.
Christian Brabandt

1
@ChristianBrabandt 진심으로 기다려? 난 몰랐어.
텀블러 41

@ChristianBrabandt 나는 그 감사를 몰랐다!
statox
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.