2016-10-26 3 views
1

:echo expand("<cword>")을 입력하면 vim은 커서에 단어를 표시해야합니다. 하지만 :tag expand("<cword>")를 입력 할 때, 그것은 프롬프트vim expand가 작동하지 않는 이유

E426 : 찾을 수 없음 태그 : 확장 (그것의 태그 기능을 호출되지 않습니다 기능을 확장 할 것으로 보인다

expand(tag로 전송 매개 변수로. 어떤 통찰력 사전에

감사합니다. 언급이 선호된다.

+0

': echo',': let' 그리고 난이 수용하도록 설계되어 잊지 어쩌면 다른 명령 전직 명령의 모든 문자 부분은 변수 (단일 또는 이중 따옴표) 인용하고 연결될 수 있어야합니다 vim 식, vars, funcs ... 그러나 대부분의 다른 명령은 그렇지 않습니다. 상상해보십시오. 항상': e "myfile.txt"'를 인용 부호와 함께 입력 하시겠습니까? 그것은 정말로 비생산적인 것입니다 – yolenoyer

답변

4

vim 스크립트 정확한 평가 마치 : 명령 줄에 입력 한 Ex 명령과 같습니다. ex에는 변수가 없으므로이를 지정할 방법이 없습니다. 대화 형으로 명령을 입력 할 때, 당신은 아마 변수 내용을 삽입 할 <C-R>=을 사용하십시오 :

:tag <C-R>=expand('<cword>')<CR><CR> 

... (물론, 실제로 현재 단어에 대한 <C-R><C-W> 짧은있다).

스크립트에서는 :execute을 사용해야합니다.

:execute 'tag' expand('<cword>') 
+0

안녕, 잉고, 의 차이점은 무엇입니까? 그리고 그는 무엇을 후행합니까 합니까? –

+0

''은 Control plus R입니다. 명령 줄 모드에서 이것은 레지스터의 내용을 삽입합니다. 여기에서는 특별한'= '표현식 레지스터가 사용됩니다. ''는 Enter 키입니다. 우리는 두 번 필요하다. 일단 표현식 엔트리를 끝내고, 다시 한 번 명령 행을 완료한다. –