Jak skonfigurować Vima do edycji plików Makefile i normalnych plików kodu?
22
Używam Mac OSX 10.7.5, zawartość .vimrc jest następująca:
set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab
set shiftround
set smarttab
set autoindent
set copyindent
autocmd FileType make setlocal noexpandtab
Próbuję to zrobić, gdy edytuję normalne pliki, takie jak .js, .html Chcę, aby moje tabulatory były wcięte 4 pustymi spacjami zamiast normalnej tabulacji.
Ale kiedy edytuję Makefile, potrzebuję normalnej tabulacji zamiast 4 pustych spacji dla wcięć.
Myślałem, że powyższa konfiguracja w .vimrc da mi to, ale nie działa dla mnie, ponieważ kiedy edytuję Makefile, wciąż otrzymuję 4 puste miejsca na wcięcia.
" 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
Ta sekcja powinna być zrozumiała, ale sugeruję przeczytanie pomocy vim na temat filetypei autocmd.
Najbardziej odpowiednia dla Ciebie linia to prawdopodobnie ta:
autocmd FileType make set noexpandtab shiftwidth=8 softtabstop=0
upewnij się jednak, że wykrywanie typu pliku jest włączone.
Dzięki za doskonałe polecenia automatyczne! Zauważyłem w tym samouczku , ucząc się od ciebie, .vimrcże jeśli nie zawiniesz swojego autocmdw augroupsekcje, Vim je wczyta i powieli. Czy to jest poprawne?
Joshua Detwiler
6
Zamiast robić to za pomocą autocmds, możesz utworzyć własną wtyczkę typu pliku użytkownika dla każdego rodzaju pliku i umieścić go w miejscu, w ~/.vim/ftplugin/<filetype>.vimktórym <filetype>jest właściwy typ pliku. Na przykład:
Ta odpowiedź ma większy sens, jeśli chcesz utrzymać porządek w katalogach .vimrc i .vim.
Floby
0
Łatwiej jest skonfigurować vima tak, aby zawsze rozwijał tabulatory, co jest pożądane dla wszystkich plików oprócz makefile. W plikach makefiles możesz użyć, aby wstawić kartę w dowolnym miejscu. Nie zostanie rozwinięty.
.vimrc
że jeśli nie zawiniesz swojegoautocmd
waugroup
sekcje, Vim je wczyta i powieli. Czy to jest poprawne?Zamiast robić to za pomocą autocmds, możesz utworzyć własną wtyczkę typu pliku użytkownika dla każdego rodzaju pliku i umieścić go w miejscu, w
~/.vim/ftplugin/<filetype>.vim
którym<filetype>
jest właściwy typ pliku. Na przykład:Musisz upewnić się, że masz włączone wtyczki typu pliku
~/.vimrc
za pomocą następującego polecenia:źródło
Łatwiej jest skonfigurować vima tak, aby zawsze rozwijał tabulatory, co jest pożądane dla wszystkich plików oprócz makefile. W plikach makefiles możesz użyć, aby wstawić kartę w dowolnym miejscu. Nie zostanie rozwinięty.
źródło