누군가 파일 형식에 따라 Vim의 들여 쓰기 동작을 변경하는 가장 쉬운 방법을 간단한 용어로 설명해 주시겠습니까? 예를 들어, 파이썬 파일을 열면 2 개의 공백으로 들여 쓰기가되지만 Powershell 스크립트를 열면 4 개의 공백을 사용해야합니다.
답변
.vim
vim이 특정 파일 형식으로 전환 될 때마다 실행할 파일을 추가 할 수 있습니다 .
예를 들어 다음 ~/.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
나는 또한 차이 학습 제안 tabstop
및 softtabstop
. 많은 사람들이에 대해 모릅니다 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 =
답변
나는 보통 expandtab
set 으로 작업 하지만 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
( :set
expandtabs)은 파일에 이미 존재하는 탭을 변경하지 않습니다 :retab
. 예를 들면 다음과 같습니다.
:set et
:retab
파일의 탭이 충분한 공간으로 바뀝니다. 탭을 다시 사용하려면 다음을 수행하십시오.
:set noet
:retab