현재 파일의 이름과 확장자를 어떻게 얻습니까?


24

vimscript를 사용하여 파일의 이름과 확장자를 얻는 방법이 있습니까?

그렇다면 이름과 확장명을 별도로 원합니다.


"파일"? 어떤 파일? 현재 버퍼에있는 것? 검색 경로 어딘가에 파일이 있습니까?
muru

사용자가`vim <file name>
iProgram


나는 완전한 길을 원하지 않는다. 파일의 이름과 확장자 만 원합니다. vimscript에서 이것을 사용하고 싶은 경로는 아닙니다.
iProgram

네, 두 답변 모두 실제로 연결된 질문 (특히 CharlesL의 답변)에 있습니다.
Martin Tournoij

답변:


27

보낸 사람 :he filename-modifiers:

    :t      Tail of the file name (last component of the name).  Must
            precede any :r or :e.
    :r      Root of the file name (the last extension removed).  When
            there is only an extension (file name that starts with '.',
            e.g., ".vimrc"), it is not removed.  Can be repeated to remove
            several extensions (last one first).

    :e      Extension of the file name.  Only makes sense when used alone.
            When there is no extension the result is empty.
            When there is only an extension (file name that starts with
            '.'), the result is empty.  Can be repeated to include more
            extensions.  If there are not enough extensions (but at least
            one) as much as possible are included.
Examples, when the file name is "src/version.c", current dir
"/home/mool/vim":
  :p                    /home/mool/vim/src/version.c
  :t                                       version.c
  :t:r                                     version
  :e                                               c

expand함수를 사용하여 이를 확장하고 해당 값을 얻을 수 있습니다.

:let b:baz=expand('%:e')

예를 들면 다음과 같습니다.

$ vim '+ exe ":normal i" . expand("%:t") . "^M" . expand("%:e")' +wqa foo.bar; cat foo.bar
foo.bar
bar

:t" 해야 하지만, 전자 : R 또는 앞에" :e"단독으로 사용되는 경우에만 의미가 있습니다." 예를 들어, 나는 후자와 함께하지만 문서가 거기에 모순된다는 것이 흥미 롭습니다.
SnoringFrog

@SnoringFrog 나는 그것이 무엇을 의미하는 것은 당신이 할 수 없다는 것입니다 생각 :e:t하지만, :t:e의미없는 경우, 허용됩니다.
muru

오, 어떻게 그렇게 읽을 수 있는지 봅니다. 그때 말이 되네요.
SnoringFrog

10

expand(), 사용할 수 있습니다:h expand()

스크립트에서 파일 이름을 얻으려면 다음을 수행하십시오.

let file_name = expand('%:t:r')

확장을 얻으려면 다음을 수행하십시오.

let extension = expand('%:e')

expand()기능은 와일드 카드 및 특수 기호를 확장 할 수 있습니다 . 여기 %에서 현재 파일 이름으로 확장 되는 것을 사용했습니다 .

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