문제

누군가 파일 유형에 따라 VIM의 들여 쓰기 동작을 변경하는 가장 쉬운 방법을 간단하게 설명 할 수 있습니까? 예를 들어, Python 파일을 열면 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, Filetype 플러그인 섹션으로 스크롤하십시오.

다른 팁

ftplugins 또는 autocommands를 사용하여 옵션을 설정하십시오.

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

인용하다: FileType별로 vim whitespace 기본 설정을 설정합니다

~/.vimrc의 파일 접미사를 기준으로 autocmd 명령을 넣으십시오.

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

당신이 찾고있는 명령은 아마도 ts = 및 sw = 일 것입니다.

나는 보통 함께 일합니다 expandtab 설정하지만 MakeFiles에게는 좋지 않습니다. 나는 최근에 덧붙였다 :

:autocmd FileType make set noexpandtab

.VIMRC 파일의 끝까지 makefile, makefile 및 *.mk를 makefiles로 인식하고 탭을 확장하지 않습니다. 아마도, 당신은 이것을 확장 할 수 있습니다.

나는 항상 다른 필레 타입에 대한 탭의 크기를 변경하는 사람들에게 항상 놀랐습니다. 덜 사용하여 파일을 볼 때 지구상에서 무엇을합니까?

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

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

이것은 우리 대부분에 의해 알려져 있을지 모르지만 어쨌든 (나는 처음으로 당황했다) : :set et (:set ExpandTabs)는 파일에 이미 존재하는 탭을 변경하지 않으므로해야합니다. :retab. 예를 들어:

:set et
:retab

파일의 탭은 충분한 공간으로 대체됩니다. 단순히 탭을 되 찾으려면 :

:set noet
:retab

오늘은 시도 할 수 있습니다 editorConfig, 또 한있다 vim 플러그인 그것을 위해. 이를 통해 VIM에서 계약 크기를 바꿀 수있을뿐만 아니라 다른 많은 편집자에서 일관된 코딩 스타일을 유지할 수 있습니다.

아래는 간단한 editorConfig입니다. 보시다시피 Python 파일에는 4 개의 압입 공간이 있으며 퍼그 템플릿 파일에는 2 만 있습니다.

# 4 space indentation for python files
[*.py]
indent_style = space
indent_size = 4

# 2 space indentation for pug templates
[*.pug]
indent_size = 2

Indent 플러그인을 사용하거나 설정을 수동으로 사용하여 Vim의 인기를 잘 구성 할 수 있지만 호출되는 Python 스크립트를 사용하는 것이 좋습니다. vindect Python 파일을 열 때 관련 설정이 자동으로 설정됩니다. 사용 이 팁 Vindect를 사용하여 더 효과적으로 만듭니다. 다양한 인기 스타일 (탭 대 공간 및 공간 수)으로 다른 사람들이 만든 Python 파일을 처음 편집하기 시작했을 때 엄청나게 실망 스러웠습니다. 그러나 함께 vindect 이 들여 쓰기 파일

또한 추천 :

나는 C라고 쓴 유틸리티를 사용합니다. autotab. 로드하는 파일의 처음 수천 줄을 분석하고 VIM 매개 변수의 값을 결정합니다. shiftwidth, tabstop 그리고 expandtab.

예를 들어, 이것은 예를 들어 컴파일됩니다. gcc -O autotab.c -o autotab. VIM과 통합하기위한 지침은 맨 위의 주석 헤더에 있습니다.

Autotab은 상당히 영리하지만 때때로 혼란 스러울 수 있습니다. 특히 다른 들여 쓰기 스타일을 사용하여 일관되지 않게 유지되었습니다.

파일이 분명히 탭이나 탭과 공백의 조합을 사용하는 경우, autotab은 주석과 같은 연속적인 줄에 대한 내부 요소의 정렬과 같은 요소를 고려하여 어떤 탭 크기를 사용하고 있는지 알아냅니다.

다양한 프로그래밍 언어에 대해 작동하며 C 전처리 지침, C 문 레이블과 같은 계약 증분에 순종하지 않는 "밴드 외"요소를 용서하고 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top