Comment mettre automatiquement en retrait de nouvelles lignes?

15

Je travaille sur des projets avec différents niveaux d'indentation. Dans bon nombre de ces projets, en raison de la façon dont les fichiers sont généralement structurés, la plupart des lignes sont en retrait sur au moins deux niveaux (comme les méthodes dans les fichiers Java).

Cela signifierait que la création d'une nouvelle ligne sur une ligne

public void something () {

Amènerait mon curseur à la ligne suivante, automatiquement en retrait, comme

public void something () {
    [cursor]

Bien que je puisse appuyer plusieurs fois sur la touche de tabulation sur une nouvelle ligne pour l'aligner, y a-t-il une meilleure façon de le faire (possible automatiquement)?

Kevin Brown
la source

Réponses:

12

Cela peut être fait en utilisant une combinaison de l' autoindentoption et du filetypeplugin.

L' autoindentoption copiera votre retrait actuel lors de la création d'une nouvelle ligne. Donc, si votre niveau d'indentation actuel est 4 lorsque vous démarrez la nouvelle ligne, le curseur sera déplacé vers le même niveau d'indentation sur la ligne suivante.

Dans votre ~/.vimrcdossier, vous mettriez

set autoindent

Vous pouvez également utiliser le filetypeplug - in pour déterminer automatiquement le prochain niveau d'indentation en fonction du type de fichier.

Vous pouvez l'activer à la volée avec

:filetype indent on

Ou, dans votre ~/.vimrcdossier, vous mettriez

filetype plugin indent on

Qui déterminera automatiquement l'indentation en fonction du type de fichier.

Kevin Brown
la source
6

Utilisez :set cindent( :set cinpour faire court) ou :set smartindent( :set sipour faire court). Si votre ligne se termine par une accolade ouvrante et que vous frappez Enter, la ligne suivante sera automatiquement mise en retrait d'un niveau supplémentaire. (C'est mieux que :set autoindent, qui indente simplement la ligne suivante au même niveau.) cindentEst mieux adapté aux langages de type C, tout en smartindentétant plus polyvalent pour une utilisation avec d'autres langages de programmation.

La quantité et le type d'indentation est commandé par :set shiftwidth=…, :set tabstop=…, et :set expandtab.

200_success
la source
'smartindent'est obsolète, ce n'est donc pas le meilleur choix. Il a été remplacé par 'cindent'et 'cinoptions'pour les langages de type C. En général, cependant, l'indentation du type de fichier est la voie à suivre, avec 'autoindent'comme solution de rechange.
jamessan
@jamessan smartindentn'est pas déconseillé, mais cindentmérite d'être noté. J'ai mis à jour la réponse. (Merci!)
200_success
Je vous recommande également de jeter un œil à editorconfig.org . Il y a bien sûr un plugin pour vim (et de nombreux autres éditeurs) et c'est un excellent moyen de conserver les paramètres par défaut de votre éditeur sur votre VCS
Cyber ​​Oliveira
0

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 l'indentation uniquement, utilisez # vim: st ai si

Eduardo Cuomo
la source