다음과 같이 문자열 값을 갖는 vim 변수가 있습니다.Vim 스크립트 : 문자열에서 와일드 카드 확장
foo%:p:r:sbar
% : p : r : s는 vim 와일드 카드입니다.
문자열 변수에서 모든 와일드 카드를 확장하려면 어떻게해야합니까?
아쉽게도 expand (my_variable)가 도움이되지 않습니다. 추가 인수를 지정하거나 다른 vim 함수를 사용해야합니까?
고마워.
다음과 같이 문자열 값을 갖는 vim 변수가 있습니다.Vim 스크립트 : 문자열에서 와일드 카드 확장
foo%:p:r:sbar
% : p : r : s는 vim 와일드 카드입니다.
문자열 변수에서 모든 와일드 카드를 확장하려면 어떻게해야합니까?
아쉽게도 expand (my_variable)가 도움이되지 않습니다. 추가 인수를 지정하거나 다른 vim 함수를 사용해야합니까?
고마워.
은 문서의이 섹션에서는, 특히 관련 보인다 :help expand()
을 시도해보십시오
Modifiers:
:p expand to full path
:h head (last path component removed)
:t tail (last path component only)
:r root (one extension removed)
:e extension only
Example: >
:let &tags = expand("%:p:h") . "/tags"
Note that when expanding a string that starts with '%', '#' or
'<', any following text is ignored. This does NOT work: >
:let doesntwork = expand("%:h.bak")
Use this: >
:let doeswork = expand("%:h") . ".bak"
그것은 당신의 후행 (그리고 아마도 최고의) 문자열 expand()
작동하지 않습니다 것 같습니다. 하지만
이가하는 일 :
:echo "foo" . expand("%:p:r:s") . "bar"
는 아마도 그들이 다른 문자열과 결합되기 전에 와일드 카드 확장되도록 스크립트를 재 작업 할 수 있습니다. 또는 연결 문자열을 분할하고 와일드 카드를 확장 한 다음 다시 연결하려고 할 수 있습니다.
약 join(map(split(mystring, '\ze[<%#]'), 'expand(v:val)'), '')
?
나는 그것만으로 생각합니다. 문자열이 다른 vim 함수에 의해 동적으로 생성되기 때문에이 경우 많은 코드를 리팩토링해야합니다. 일반적으로 그렇게 할 방법이 있습니까? –