파일 유형에 따라 기본 들여 쓰기를 변경하려면 어떻게해야합니까?


34

작업중 인 파일 형식에 따라 다른 들여 쓰기를하고 싶습니다. 예를 들어, .c들여 쓰기를 원하는 파일 작업은 4 칸입니다. 에서 .html파일 나는 탭 작업을 (해야)하고 싶습니다.

어떻게하면 되나요?

답변:


25

가장 좋은 방법은 해당 설정을에 넣는 것입니다 ~/.vim/after/ftplugin/<filetype>.vim.

HTML의 경우 (4 자 너비 탭을 원한다고 가정) :

~/.vim/after/ftplugin/html.vim

setlocal shiftwidth=4
setlocal softtabstop=4
setlocal noexpandtab

Vim은 이미 자체적으로 파일 유형 검사를 수행하고 이미 적절한 ftplugin을 소스하려고하기 때문에 ftplugin을 사용하는 것이 자동 명령을 사용하는 것보다 선호됩니다.

-- 편집하다 --

당신이 가정 filetype plugin on당신에 vimrc당신이해야하는 - - 올바른 파일 형식이 발견하고 버퍼 설정되면 빔, 당신이 편집 파일의 파일 형식을 감지하려고합니다,이 표준 위치에서 해당 ftplugin 소스하려고 :

$VIMRUNTIME/ftplugin/html.vim
~/.vim/ftplugin/html.vim
~/.vim/ftplugin/after/html.vim

이 모든 것이 자동으로 이루어 지므로 Vim이 파일 형식을 인식하면 파일 형식 감지 논리를 추가 할 이유가 없습니다. 설정을 올바른 ftplugin에 추가하면됩니다.


어떻게 든 ftplugin을 활성화해야합니까, 아니면 파일을 만들면 자동으로 활성화됩니까?
DeltaLima

에 있어야 filetype plugin indent on합니다 vimrc.
romainl

1
@DeltaLima vim에는 설정을 확인하는 경로가 있습니다. 만큼 filetype plugin on설정, 정력의 경로를 포함 ftplugin/<filetype>.vim하고 after/ftplugin/<filetype>/vim경로에 파일을.
davidlowryduda

@DeltaLima, 내 편집 내용을 참조하십시오.
romainl

14

에서 자동 명령을 사용하여이 작업을 수행 할 수 있습니다 .vimrc.

예를 들어 html_like_modeHTML 파일을 편집하기 위해 다양한 것을 설정 하는 기능 이 있습니다. 내에서 .vimrc, 나는 :

au BufNewFile,BufRead *.html call s:html_like_mode()

파일 확장자에서 제외됩니다. 파일 유형을 활성화 한 경우 파일 유형을 키 오프 할 수도 있습니다.

au FileType perl setlocal equalprg=perltidy

보시다시피, 거기에서 명령을 내릴 수 있습니다. 따라서 setlocal shiftwidth 4* .c 파일을 쉽게 만들 수 있습니다 .


9

augroup관련 자동 명령을 명명 된 그룹으로 그룹화 할 수 있습니다. ( 자동 명령 그룹에 대한 자세한 내용은 여기 를 참조 하십시오 .) augroups를 사용 하여 자동 명령을 ~/.vimrc추가 할 때마다 자동 명령을 추가하지 않습니다.

augroup vimrc
  autocmd!
augroup END

autocmd vimrc FileType html setlocal shiftwidth=4 tabstop=4

2
) 당신이 그것을 설정하는 방법, 모두가 알 무엇을 설명 할 경우에 유용 할 것이다
세스

3

사용 된 autocmdFileType

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