Comment configurer vim pour éditer les fichiers de code Makefile et normal?
22
J'utilise Mac OSX 10.7.5, le contenu de .vimrc est le suivant:
set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab
set shiftround
set smarttab
set autoindent
set copyindent
autocmd FileType make setlocal noexpandtab
Ce que j'essaie de faire, c'est lorsque je modifie des fichiers normaux comme .js, .html, je veux que mes onglets soient en retrait avec 4 espaces vides au lieu d'un onglet normal.
Mais lorsque je modifie le Makefile, j'ai besoin que ce soit un onglet normal au lieu de 4 espaces vides pour les indentations.
Je pensais que la configuration ci-dessus dans .vimrc allait me donner cela, mais ne fonctionne pas pour moi car lorsque j'édite Makefile, j'obtiens toujours 4 espaces vides pour l'indentation.
" 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
La section devrait être explicite, mais je vous suggère de lire l'aide de vim sur filetypeet autocmd.
La ligne la plus pertinente pour vous est probablement celle-ci:
autocmd FileType make set noexpandtab shiftwidth=8 softtabstop=0
assurez-vous cependant que la détection de type de fichier est activée.
Merci pour les excellentes commandes automatiques! J'ai remarqué dans ce didacticiel en apprenant de votre part .vimrcque si vous n'encapsulez pas vos autocmds dans des augroupsections, Vim les lira et les dupliquera. Est-ce correct?
Joshua Detwiler
6
Au lieu de le faire avec autocmds, vous pouvez créer votre propre plugin de type de fichier utilisateur pour chaque type de fichier et le placer ~/.vim/ftplugin/<filetype>.vim, où se <filetype>trouve le type de fichier réel que vous souhaitez. Par exemple:
Cette réponse a plus de sens si vous souhaitez garder vos répertoires .vimrc et .vim bien rangés.
Floby
0
Il est plus simple de configurer vim pour toujours développer les onglets, ce qui est souhaité pour tous les fichiers sauf les makefiles. Dans les makefiles, vous pouvez utiliser pour insérer un onglet où vous le souhaitez. Il ne sera pas développé.
.vimrc
que si vous n'encapsulez pas vosautocmd
s dans desaugroup
sections, Vim les lira et les dupliquera. Est-ce correct?Au lieu de le faire avec autocmds, vous pouvez créer votre propre plugin de type de fichier utilisateur pour chaque type de fichier et le placer
~/.vim/ftplugin/<filetype>.vim
, où se<filetype>
trouve le type de fichier réel que vous souhaitez. Par exemple:Vous devez vous assurer que les plugins de type de fichier sont activés dans votre
~/.vimrc
avec la commande suivante:la source
Il est plus simple de configurer vim pour toujours développer les onglets, ce qui est souhaité pour tous les fichiers sauf les makefiles. Dans les makefiles, vous pouvez utiliser pour insérer un onglet où vous le souhaitez. Il ne sera pas développé.
la source