파일 유형별로 Vim 공백 환경 설정


155

일할 때 들여 쓰기를 위해 집 스타일을 따라야합니다.

  • HTML과 루비를 코딩 할 때 2 개의 공백
  • 자바 스크립트 코딩시 tabwidth = 4가 권장되는 탭

파일 유형마다 다른 공백 환경 설정을 지정하는 가장 좋은 방법은 무엇입니까?



이 모든 대답은 나를 더욱 혼란스럽게 만들었습니다. 문제는 옵션이 기본 설정에 달려 있다는 것입니다. 수락 된 답변에는 멋진 구문이 있습니다. 이 훌륭한 가이드였다 vimcasts.org/transcripts/2/en
미카엘 Lindlöf

답변:


245

여러 가지 방법이 있지만 간단하고 이해하기 쉬운 방법이 있습니다. 이 줄을 당신의 ~/.vimrc:

autocmd FileType html setlocal ts=2 sts=2 sw=2
autocmd FileType ruby setlocal ts=2 sts=2 sw=2
autocmd FileType javascript setlocal ts=4 sts=4 sw=4

27
ts = '파일에서 <Tab>이 사용하는 공간 수'sts = '편집 중 <Tab>이 사용하는 공간 수'sw = '(자동) 들여 쓰기 단계에 사용할 공간 수': vimdoc.sourceforge .net / htmldoc / quickref.html # option-list
zdsbs

나는 적어도 루비에 대해 expandtab을 추가해야했습니다. 여기에 '너무 많은 PHP'로 답변을보십시오.
Michael Durrant

87

Peter의 대답은 간단하지만 불행히도 옵션이 옳지 않습니다. 대신 다음 옵션을 사용해야합니다.

autocmd Filetype html setlocal ts=2 sw=2 expandtab
autocmd Filetype ruby setlocal ts=2 sw=2 expandtab
autocmd Filetype javascript setlocal ts=4 sw=4 sts=0 noexpandtab

참고 사항 :

  • 를 사용하여 vim show tab 문자를 만들 수 있습니다 :set list.
  • 탭 / 공간 옵션이 올바르게 설정되면 :retab!명령을 사용하여 vim이 파일을 복구하거나 (공간을 탭으로 대체하거나 그 반대로) 만들 수 있습니다 .

2
의 이익을 무엇입니까 expandtab이상은sts=2
제임스 맥마흔

12
@JamesMcMahon expandtab은 모든 탭을 공백으로 확장합니다. sts (softtabstop)는 들여 쓰기를위한 공백과 탭을 삽입합니다. 탭 스톱의 크기를 기준으로 들여 쓰기에 들어갈 수있는 탭 수와 그 이후의 공백이 있습니다. 물론 expandtab이 켜져 있으면 삽입되는 모든 탭이 공백으로 변환됩니다. stackoverflow.com/questions/1562336/… 더 도움이 될 수 있습니다. 확장 탭이 없으면 Peter의 대답은 공백이 아닌 너비가 2자인 탭을 삽입합니다.
ajmccluskey

35

Peter의 대답은 +1이지만 Vim은 또 다른 솔루션을 제공합니다. 한 번 setlocal에 전체 옵션, 명령 및 매핑을 설정하는 것과 같이 단일보다 복잡한 작업을 수행하려는 경우 vim의 파일 유형 플러그인 기능이 구출됩니다.

당신이 필요 filetype plugin on하거나 filetype plugin indent on당신의 .vimrc다음 만들 수있는 예를 들어 루비를위한 플러그인을 만들 수 ~/.vim/ftplugin/ruby.vim. 기술적으로 당신이 여기에서 원하는 명령을 사용할 수 있습니다, 루비 파일이로드 될 때 실행되지만 권장 설정이 포함되는 setlocal, map <buffer>, command -buffer, 및 정의하는 기능을합니다. 더 많은 정보는 사용자 안내서에 있습니다; 스크립팅 vim에 익숙하다면으로 이동하십시오 . :help 41.11그렇지 않으면 :help usr_40및을 읽으십시오 :help usr_41.


10

멋진 vim 스크립트도 있습니다 : DetectIndent 는 열려있는 파일의 들여 쓰기를 감지하려고합니다. 코딩 스타일이 다른 많은 파일로 작업하는 경우 매우 편리합니다.

.vimrc 에서 자동 명령을 사용합니다 .

:autocmd BufReadPost * :DetectIndent 

0

탭 키를 누를 때마다 공백 문자를 삽입하려면 '확장 탭'옵션을 설정하십시오.

:set expandtab

다음 단계는 탭 키를 눌렀을 때 삽입되는 공백 문자 수를 제어하고 'tabstop'옵션을 설정하는 것입니다. 예를 들어 탭에 공백을 2 개 삽입하려면 다음을 사용하십시오.

:set tabstop=2

심판 : http://vim.wikia.com/wiki/Converting_tabs_to_spaces

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