2013-02-05 1 views
13

vimscript에서 현재 파일 형식을 변수로 사용하고 싶습니다.Vimscript : 현재 파일 형식을 변수로 가져 오는 방법

현재 파일 유형을 잡고 해당 파일 유형의 다른 파일을 편집하는 기능을 만들고 있습니다.

예를 들어

:

  • 는 "foo는/bar.txt라는 편집"는 "TMP/other.txt"
  • 는 "foo는/bar.cpp"를 편집 열려 열려 "TMP/등 other.cpp "

나는 :set ft? 표시 정력의 파일 형식,하지만 난 그것을 캡처 한 다음 새 파일 문자열의 일부로 사용하여 다른 파일을 여는 방법을 모르겠어요 것을 알고있다.

+5

'& filetype'은 반드시 파일 이름 확장자와 일치하지 않습니다! 정말이 파일 형식을 사용하고 싶습니까, 아니면'bufname ("%")'fnamemodify (bufname ("%"), ": t")'와 같이 현재 파일의 확장자를 추출 하시겠습니까? 예를 들어, 'foo.hpp'라는 파일은 cpp의'& filetype'을 가지고 있습니다. 이 경우 "tmp/other.cpp"또는 "tmp/other.hpp"를 열시겠습니까? – cptstubing06

답변

24

설정의 값에 접두어를 붙이면 앰퍼샌드 값을 사용할 수 있습니다. 변수에 파일 형식을 지정하려면 다음과 동등한 :

let my_filetype = &filetype 
let my_filetype = &ft 
당신 그래서 예를 들면

, 현재의 버퍼의 파일 형식을 가정 당신은

execute 'edit tmp/other.' . &filetype 

주처럼 뭔가를 할 수, 설정되어있는 것을 execute 표현식을 사용해야 문자열이 연결되기 전에 변수가 확장됩니다.

0

파일 형식과 파일 접미사가 반드시 동일한 것은 아닙니다. 예를 들어, .txt 파일을 편집하는 경우 zft = & ft는 "text"로 zft를 설정합니다. let zfs = fnamemodify (bufname ("%"), ": e")는 zfs를 "txt"로 설정합니다.

관련 문제