“filetype plugin on”은 실제로 무엇을합니까?


11

ftplugin.vim파일을 로드한다는 것을 알고 있지만 실제로 무엇을합니까? 파일 유형에 따라 옵션을 설정합니까?

내 vimrc의 시작 부분 에이 줄을 포함시켜야한다면

filetype plugin indent on

그런 다음이 줄 다음에 몇 가지 옵션을 설정하십시오 (자동 들여 쓰기, smartindent 등). 파일 유형 플러그인 또는 들여 쓰기 파일의 영향을받는 옵션을 어떻게 알 수 있습니까?

답변:


7

에 좋은 설명이 help filetype있습니다.

파일 유형에 대해 정의 된 모든 옵션은 다음과 setlocal같이 설정됩니다 .

:setl[ocal] ...     Like ":set" but set only the value local to the
                    current buffer or window.  Not all options have [..]

예를 들어 다음을 /usr/share/vim/vim80/ftplugin/javascript.vim정의합니다.

setlocal commentstring=//%s

로컬 옵션은 글로벌 옵션보다 우선 .vimrc하므로 설정이 무시 될 수 있습니다. 이 경우 파일을 만들고 ~/.vim/after/ftplugin/javascript.vim(변경하려는 파일 형식의 이름으로) 고유 한 setlocal옵션을 설정해야합니다 .

가장 쉬운 방법은 단지에있는 파일 형식의 파일을 열 수 있습니다 옵션이 설정되어있는 볼 /usr/share/vim/vim80/ftplugin, ../indent그리고 ../syntax.


1
E492 : 편집자 명령이 아님 : 플러그인 on [들여 쓰기 동일]
Tony

이 답변의 마지막 문장이 잘못되었습니다. filetype plugin on그리고 filetype indent on참으로 별도의 명령입니다,하지만 모두가 산출하기 위해 결합 될 수있다 filetype plugin indent on.
Ruslan

@Ruslan 감사합니다, 나는 그 문장을 제거했습니다.
laktak

2

주어진 패턴과 일치하는 파일을 열 때 실행될 자동 명령을 정의합니다. 이 autocommands source차례의 파일 형식 플러그인 인식 파일 형식에 관련.

해당 파일 유형 플러그인 스크립트에서 vim 스크립트에 넣을 수있는 모든 것을 찾고 쓸 수 있습니다. 모범 사례는 글로벌 사물을 정의하는 것이 아니라 독점적으로 로컬 사물을 정의하는 것입니다. 즉 :

  • 지역 옵션 :setlocal opt=value
  • 로 지역 매핑 :[cnivsxot](nore)map <buffer> ...
  • :iab-<buffer> ...& co를 사용한 지역 약어
  • 로컬 명령 :command -b ...
  • 지역 변수 :let b:var = 42

에 관해서

  • 메뉴를 사용하려면 로컬 메뉴를 에뮬레이트하는 플러그인을 사용해야합니다. Michael Geddes의 플러그인 또는 현대화 된 포크를 참조하십시오 .
  • 함수를 사용하면 ftplugins에 넣을 수 있지만 자동로드 플러그인에서 가장 잘 정의됩니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.