Indenter automatiquement les espaces avec C dans vim?
-
01-07-2019 - |
Question
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 faire en sorte que vim fasse automatiquement le bon espacement des blocs?
Ainsi, après avoir tapé un {, la ligne suivante aura 2 espaces en retrait, et un retour sur cette ligne le maintiendra au même retrait, et un} retournera 2 espaces en arrière?
La solution
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
Autres conseils
J'ai tout écrit sur les onglets dans vim , ce qui donne des informations intéressantes sur lesquelles vous n'avez pas posé de questions. . Pour mettre automatiquement les accolades en retrait, 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 > ;. Je l’utilise habituellement en conjonction avec le mode de sélection de bloc (v, sélectionne un bloc de texte, & Lt; ou & Gt;).
(J'essaierais de vous dissuader d'utiliser une indentation à deux espaces, car je (et la plupart des gens) ai du mal à lire, mais c'est une autre discussion.)
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 > décent
Un bon démarreur est dans ~/.vimrc
. Si vous voulez l'essayer, utilisez
:source $VIMRUNTIME/vimrc_example.vim
quand dans vim.
En fait, je suggérerais simplement de copier le contenu sur votre $VIMRUNTIME/vimrc_example.vim
car il est bien commenté et constitue un bon point de départ pour apprendre à utiliser vim. Vous pouvez le faire en
:e $VIMRUNTIME/vimrc_example.vim
:w! ~/.vimrc
Ceci écrasera votre :help vimrc-intro
actuel, mais si tout ce que vous avez est là, 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 <=>.
Exécutez simplement:
user@host:~ $ echo set autoindent >> .vimrc
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 " 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, car vous voudriez 4 espaces pour les onglets dans l'ancien et 2 pour des espaces dans ce dernier.
et souvenez-vous toujours de cette vénérable explication de Spaces + Tabs:
Essayez:
définir sw = 2
set ts = 2
set smartindent