Makefile과 일반 코드 파일을 모두 편집하도록 vim을 설정하는 방법은 무엇입니까?


22

Mac OSX 10.7.5를 사용하고 있는데 .vimrc의 내용은 다음과 같습니다.

set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab
set shiftround  
set smarttab    
set autoindent  
set copyindent  

autocmd FileType make setlocal noexpandtab

내가하려고하는 것은 .js, .html과 같은 일반 파일을 편집 할 때 일반 탭 대신 4 개의 빈 공간으로 탭을 들여 쓰기를 원합니다.

그러나 Makefile을 편집 할 때 들여 쓰기를 위해 4 개의 빈 공간 대신 ​​일반 탭이어야합니다.

vimrc의 위의 설정이 나에게 줄 것이라고 생각했지만 Makefile을 편집 할 때 여전히 들여 쓰기를 위해 4 개의 빈 공간이 생겼습니다.

내가 뭘 잘못하고 있는지 잘 모르시겠습니까?

답변:


26

이것은 내 섹션입니다 .vimrc:

" enable filetype detection:
filetype on
filetype plugin on
filetype indent on " file type based indentation

" recognize anything in my .Postponed directory as a news article, and anything
" at all with a .txt extension as being human-language text [this clobbers the
" `help' filetype, but that doesn't seem to prevent help from working
" properly]:
augroup filetype
  autocmd BufNewFile,BufRead */.Postponed/* set filetype=mail
  autocmd BufNewFile,BufRead *.txt set filetype=human
augroup END

autocmd FileType mail set formatoptions+=t textwidth=72 " enable wrapping in mail
autocmd FileType human set formatoptions-=t textwidth=0 " disable wrapping in txt

" for C-like  programming where comments have explicit end
" characters, if starting a new line in the middle of a comment automatically
" insert the comment leader characters:
autocmd FileType c,cpp,java set formatoptions+=ro
autocmd FileType c set omnifunc=ccomplete#Complete

" fixed indentation should be OK for XML and CSS. People have fast internet
" anyway. Indentation set to 2.
autocmd FileType html,xhtml,css,xml,xslt set shiftwidth=2 softtabstop=2

" two space indentation for some files
autocmd FileType vim,lua,nginx set shiftwidth=2 softtabstop=2

" for CSS, also have things in braces indented:
autocmd FileType css set omnifunc=csscomplete#CompleteCSS

" add completion for xHTML
autocmd FileType xhtml,html set omnifunc=htmlcomplete#CompleteTags

" add completion for XML
autocmd FileType xml set omnifunc=xmlcomplete#CompleteTags

" in makefiles, don't expand tabs to spaces, since actual tab characters are
" needed, and have indentation at 8 chars to be sure that all indents are tabs
" (despite the mappings later):
autocmd FileType make set noexpandtab shiftwidth=8 softtabstop=0

" ensure normal tabs in assembly files
" and set to NASM syntax highlighting
autocmd FileType asm set noexpandtab shiftwidth=8 softtabstop=0 syntax=nasm

이 섹션은 설명이 필요하지만 vim 도움말 filetype및 에 대한 내용을 읽어 보시기 바랍니다 autocmd.

가장 관련성이 높은 줄은 아마도 다음과 같습니다.

autocmd FileType make set noexpandtab shiftwidth=8 softtabstop=0

그러나 파일 유형 감지가 켜져 있는지 확인하십시오.


훌륭한 자동 명령에 감사드립니다! 이 튜토리얼 에서 s 섹션을 .vimrc감싸지 않으면 Vim이 이것을 읽고 복제 한다는 것을 알게되었습니다 . 이 올바른지? autocmdaugroup
Joshua Detwiler 2018 년

6

대신 autocmds와 함께이 일을, 당신은 각 파일 형식에 대한 자신의 사용자 파일 형식 플러그인을 만들고, 그것을 배치 할 수 있습니다 ~/.vim/ftplugin/<filetype>.vim, 어디 <filetype>당신이 원하는 실제 파일 형식입니다. 예를 들면 다음과 같습니다.

mkdir -p ~/.vim/ftplugin
echo "setlocal noexpandtab" > ~/.vim/ftplugin/make.vim

~/.vimrc다음 명령으로 파일 유형 플러그인을 활성화해야합니다 .

filetype plugin on

이 대답은 .vimrc 및 .vim 디렉토리를 깔끔하게 유지하려는 경우 더 의미가 있습니다.
Floby

0

vim을 항상 탭을 확장하도록 구성하는 것이 더 간단합니다. 이는 makefile을 제외한 모든 파일에 필요합니다. 메이크 파일에서 원하는 곳에 탭을 삽입 할 수 있습니다. 확장되지 않습니다.

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