vim에게 일부 파일 확장자가 동의어라고 어떻게 말합니까?


21

.cpp템플릿 코드는 .tcc파일 로 들어가는 동안 파일 에서 C ++ 코드를 편집 합니다. 이러한 파일을 열면 구문 강조 표시를 사용할 수 없습니다. set syntax=cpp에서 tpp.vim파일을 시도했지만 ~/.vim/ftplugin/편집기에서 작동하는 동안 아무것도하지 않습니다. vim이 특정 확장을 다른 확장과 동의어로 취급 할 수있는 방법이 있습니까?

답변:


19

Vim FAQ 26.8 에서 ~/.vim/filetype.vim언급 :help 43.2하고 설명 된 것처럼 선호되는 접근 방식은을 만드는 것입니다 .

위의 방법에 대한 더 좋은 대안은 ~ / .vim 디렉토리 (또는 'runtimepath'옵션에 지정된 디렉토리 중 하나)에 filetype.vim 파일을 작성하고 다음 행을 추가하는 것입니다.

" my filetype file
if exists("did_load_filetypes")
    finish
endif
augroup filetypedetect
    au! BufRead,BufNewFile *.x       setfiletype c
augroup END

편집하다:

did_load_filetypes당신에게 어떤 문제가 발생해서는 안된다 Vim을 변경 한 후에 만 ​​다시 시작하면됩니다.

이 파일을 여러 번로드하거나 불필요하게로드하지 않으려면 기본 파일 ($ VIMRUNTIME / filetype.vim)에서 상속됩니다.

" Vim support file to detect file types
"
" Maintainer:   Bram Moolenaar <Bram@vim.org>
" Last Change:  2014 Jun 12

" Listen very carefully, I will say this only once
if exists("did_load_filetypes")
  finish
endif
let did_load_filetypes = 1

자세한 내용은 확인하십시오 :help new-filetype.


if진술? 그대로두면 autocmds가 실행되지 않습니다.
oarfish

Vim을 다시 시작해도 @oarfish?
mMontu

좋아, 이상해. 나는 au!그룹, 즉 au! BufRead,BufNewFile *.py setfiletype python아래 줄 에 진술 해야 합니다 au! BufRead,BufNewFile *.tpp setfiletype cpp. 그러나 두 번째 것만 실제로 작동합니다. .py파일을 편집 해도 파일 형식이로 설정되지 않습니다 python. 나는 정확히 vim-guru가 아니기 때문에 아마도 뭔가 빠진 것 같습니다.
oarfish

@oarfish 편집에서 언급 한 파일을 확인하면 파일에 이미 줄이 포함되어 au BufNewFile,BufRead *.py,*.pyw setf python있으므로 첫 번째 줄은 관련이 없습니다. 당신의 문제는 아마도 다른 곳일 것입니다.
mMontu 2016

"Editing .py files does not set the file type to python"- :set ft그 사건 의 결과는 무엇 입니까? 이 파이썬없는 경우의 절차에 따라 시도 빔 - 자주 묻는 질문 2.5 - 나는 "XYZ"빔과 (일부) 문제가
mMontu

14

당신은 (전세계에서 .vimrc) 할 수 있습니다 :

autocmd BufEnter *.tpp :setlocal filetype=cpp

autocmd BufEnter *.cuf :setlocal filetype=fortran치료에 CUDA 포트란에는 포트란으로 파일
khaverim

1

하나는 할 수 : au BufRead,BufNewFile *.tpp setlocal filetype=cpp자신의 .vimrc등을 가진 파일을 열 때 것을 .tpp확장, 파일 형식이 설정되어 C ++


1
이것은 기본적으로 @ edi9999의 답변과 동일한 것으로 보입니다. BufRead,BufNewFile대신 사용 하는 이유를 자세히 설명해 주 BufEnter시겠습니까?
oarfish

@oarfish 생각은별로 중요하지 않지만 docs ( )에서는 "BufEnter : .... BufReadPost 자동 명령 버퍼 편집을 시작할 때 실행 되기 때문에" BufRead,BufNewFile보다 선호합니다 . 어디 BufReadPost는 동의어입니다 BufRead . 또한, 나는 이전에 필요 하다고 생각하지 않으므로 답변에서 생략했습니다. (나는 이것을 완전히 잘못 해석했을 것이다. 더 자세한 논의를 듣고 기쁘다)BufEnter:help BufEnter:setlocal
tallamjr
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.