[file] 파일 유형별로 Vim 들여 쓰기 동작 변경

누군가 파일 형식에 따라 Vim의 들여 쓰기 동작을 변경하는 가장 쉬운 방법을 간단한 용어로 설명해 주시겠습니까? 예를 들어, 파이썬 파일을 열면 2 개의 공백으로 들여 쓰기가되지만 Powershell 스크립트를 열면 4 개의 공백을 사용해야합니다.



답변

.vimvim이 특정 파일 형식으로 전환 될 때마다 실행할 파일을 추가 할 수 있습니다 .

예를 들어 다음 ~/.vim/after/ftplugin/html.vim 과 같은 내용 의 파일 이 있습니다.

setlocal shiftwidth=2
setlocal tabstop=2

vim이 들여 쓰기를 위해 너비가 2자인 탭을 사용하게합니다 ( noexpandtab옵션은 구성의 다른 곳에서 전역 적으로 설정 됨).

http://vimdoc.sourceforge.net/htmldoc/usr_05.html#05.4 에서 파일 유형 플러그인 섹션으로 스크롤 하십시오 .


답변

ftplugins 또는 자동 명령을 사용하여 옵션을 설정하십시오.

ftplugin

~/.vim/ftplugin/python.vim:

setlocal shiftwidth=2 softtabstop=2 expandtab

그리고 다음을 켜는 것을 잊지 마십시오 ~/.vimrc.

filetype plugin indent on

( :h ftplugin자세한 내용은)

자동 명령

에서 ~/.vimrc:

autocmd FileType python setlocal shiftwidth=2 softtabstop=2 expandtab

긴 명령 또는 설정을 짧은 버전으로 바꿀 수 있습니다.
autocmd: au
setlocal: setl
shiftwidth: sw
tabstop: ts
softtabstop: sts
expandtab: :et

나는 또한 차이 학습 제안 tabstopsofttabstop. 많은 사람들이에 대해 모릅니다 softtabstop.


답변

을 수정 ~/.vimrc하고 html/rb들여 쓰기에 다른 파일 형식을 추가 하십시오 . 예를 들어 2 칸 js/coffee들여 쓰기, 4 칸 들여 쓰기

" by default, the indent is 2 spaces.
set shiftwidth=2
set softtabstop=2
set tabstop=2

" for html/rb files, 2 spaces
autocmd Filetype html setlocal ts=2 sw=2 expandtab
autocmd Filetype ruby setlocal ts=2 sw=2 expandtab

" for js/coffee/jade files, 4 spaces
autocmd Filetype javascript setlocal ts=4 sw=4 sts=0 expandtab
autocmd Filetype coffeescript setlocal ts=4 sw=4 sts=0 expandtab
autocmd Filetype jade setlocal ts=4 sw=4 sts=0 expandtab

파일 유형별로 Vim 공백 환경 설정 지정을 참조하십시오.


답변

~ / .vimrc에 파일 접미사를 기반으로 autocmd 명령을 넣습니다.

autocmd BufRead,BufNewFile   *.c,*.h,*.java set noic cin noexpandtab
autocmd BufRead,BufNewFile   *.pl syntax on

찾고있는 명령은 아마도 ts = 및 sw =


답변

나는 보통 expandtabset 으로 작업 하지만 makefile에는 좋지 않습니다. 나는 최근에 추가했다 :

:autocmd FileType make set noexpandtab

내 .vimrc 파일 끝까지 Makefile, makefile 및 * .mk를 makefile로 인식하고 탭을 확장하지 않습니다. 아마도 이것을 확장 할 수 있습니다.


답변

개인적으로 .vimrc에서 다음 설정을 사용합니다.

autocmd FileType python set tabstop=8|set shiftwidth=2|set expandtab
autocmd FileType ruby set tabstop=8|set shiftwidth=2|set expandtab


답변

이것은 대부분의 사람들에게 알려졌지만 어쨌든 (처음으로 당황했습니다) : doing :set et( :setexpandtabs)은 파일에 이미 존재하는 탭을 변경하지 않습니다 :retab. 예를 들면 다음과 같습니다.

:set et
:retab

파일의 탭이 충분한 공간으로 바뀝니다. 탭을 다시 사용하려면 다음을 수행하십시오.

:set noet
:retab