43 votes

Vim Auto Indent avec retour à la ligne

Comment faire en sorte que vim place le curseur entre les accolades en commençant sur une nouvelle ligne, c'est-à-dire avec | indiquant la position du curseur :

 class {
  |
}

pour le moment avec mes paramètres, ça ne fait que ça

 class {
|}

J'ai ceci dans mon fichier .vimrc définir l'autoindentation shiftwidth=2 tabstop=2 noexpandtab

Fondamentalement, je veux juste comment un IDE normal le mettrait en retrait.

mettre à jour:

J'ai trouvé comment faire avec inoremap { {<CR>}<Esc>O

23voto

trkoch Points 2368

J'ai trouvé que delimitMate fait exactement ce que vous décrivez et plus encore (c'est-à-dire insérant automatiquement la fin } ). Notez que vous devez dire à delimitMate d'étendre les retours chariot en ajoutant let delimitMate_expand_cr=1 à votre configuration.

D'après mon observation, c'est exactement le comportement trouvé dans TextMate et SublimeText.

13voto

romainl Points 55506

Mettez ceci dans votre .vimrc :

 imap <C-Return> <CR><CR><C-o>k<Tab>

En supposant que autoindent et smartindent soient correctement définis, taper Ctrl + Return entre les accolades placera votre curseur là où vous le souhaitez.

12voto

Justin Spahr-Summers Points 12167

autoindent fait référence au report du niveau d'indentation actuel sur les lignes suivantes. Pour le mettre en retrait selon la syntaxe, vous devez également spécifier un indicateur tel que smartindent ou cindent .

1voto

Eduardo Cuomo Points 1433

En bas du fichier, j'utilise :

 # vim: ts=2 sw=2 sts=2 sr noet st ai si

Par exemple Dockerfile :

 FROM centos-7
RUN ...
CMD ...

# vim: ts=2 sw=2 sts=2 sr noet st ai si

Si vous souhaitez conserver uniquement l'indentation, utilisez # vim: st ai si

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X