web-dev-qa-db-fra.com

Indenter automatiquement les espaces avec C dans vim?

J'ai été un peu gâté avec Eclipse et Java. J'ai commencé à utiliser vim pour faire du codage C dans un environnement Linux. Existe-t-il un moyen de permettre à vim de faire automatiquement le bon espacement des blocs?

Ainsi, après avoir tapé un {la prochaine ligne aura 2 espaces en retrait, et un retour sur cette ligne le maintiendra à la même indentation, et un} retournera de 2 espaces?

82
zxcv

Ces deux commandes devraient le faire:

:set autoindent
:set cindent

Pour les points bonus, placez-les dans un fichier nommé .vimrc situé dans votre répertoire personnel sous linux

132
davr

I a tout écrit sur les onglets dans vim , ce qui donne quelques informations intéressantes que vous n'avez pas posées. Pour indenter automatiquement les accolades, utilisez:

:set cindent

Pour mettre en retrait deux espaces (au lieu d'un onglet de huit espaces, vim default)

:set shiftwidth=2

Pour empêcher vim de convertir huit espaces en onglets:

:set expandtab

Si vous souhaitez modifier l'indentation d'un bloc de texte, utilisez <et>. J'utilise généralement ceci en conjonction avec le mode de sélection de bloc (v, sélectionnez un bloc de texte, <ou>).

(J'essaierais de vous dissuader d'utiliser l'indentation à deux espaces, car je (et la plupart des autres personnes) ai du mal à lire, mais c'est une autre discussion.)

54
Commodore Jaeger

De nombreuses fonctionnalités de vim (telles que autoindent et cindent) sont désactivées par défaut. Pour vraiment voir ce que vim peut faire pour vous, vous avez besoin d'un ~/.vimrc Correct.

Une bonne entrée est dans $VIMRUNTIME/vimrc_example.vim. Si vous voulez l'essayer, utilisez

:source $VIMRUNTIME/vimrc_example.vim

quand dans vim.

En fait, je suggèrerais simplement de copier le contenu dans votre ~/.vimrc Car il est bien commenté, et un bon endroit pour commencer à apprendre à utiliser vim. Vous pouvez le faire en

:e $VIMRUNTIME/vimrc_example.vim
:w! ~/.vimrc

Ceci écrasera votre ~/.vimrc Actuel, mais si tout ce que vous avez est là, indiquez les paramètres d'indentation suggérés par Davr, je ne vous tracasserai pas, car l'exemple que vimrc prendra en charge pour vous également. Pour un parcours complet de l'exemple et de ce qu'il fait pour vous, voir :help vimrc-intro.

8
rampion

Il suffit de lancer:

user@Host:~ $ echo set autoindent >> .vimrc
6
JamesM-SiteGen

Je pense que la meilleure réponse est en fait expliquée sur le vim wikia:

http://vim.wikia.com/wiki/Indenting_source_code

Notez qu'il est déconseillé d'utiliser "set autoindent". La meilleure caractéristique de tout ce que je trouve dans cette explication est de pouvoir définir les paramètres par fichier, ce qui est particulièrement utile si vous programmez en python et en C++, par exemple, comme vous le souhaitez 4). espaces pour les onglets dans le premier et 2 pour les espaces dans le dernier.

3
user809472

et rappelez-vous toujours cette vénérable explication de Spaces + Tabs:

http://www.jwz.org/doc/tabs-vs-spaces.html

0
mike511