Comment adapter Vim au style d'indentation actuel du fichier que je suis en train de modifier?

40

Je travaille sur une gamme de projets JavaScript. Dans la plupart de ces projets, l'indentation des fichiers JavaScript est de 2 espaces. J'ai donc défini la largeur d'indentation par défaut. Cependant, il devient 1 ou 4 dans certains autres projets.

Existe-t-il un moyen de demander à Vim de modifier le style d'indentation en fonction du style déjà utilisé dans le fichier actuel?

thameera
la source
Pourquoi ne pas ajouter de tels paramètres dans .vimrc pour un type de fichier particulier? :au BufEnter *.js :set shiftwidth=2. Cela fonctionne pour tous les projets,
SibiCoder,
1
@SibiCoder: Parce qu'un même type de fichier peut avoir différents styles d'indentation selon les projets. (par exemple: projets n'appartenant pas à la même société)
thameera
*.*est juste un motif. Vous pouvez également utiliser le nom de fichier ou le chemin. Ou, vous pouvez utiliser une commande automatique similaire à celle que j'ai donnée pour chaque fichier. Vous pouvez demander à la commande auto de prendre la tabwidth du fichier actuel et de la placer comme chemin de ce fichier. C'est assez facile.
SibiCoder

Réponses:

29

Pour ajouter à la réponse de @Undo ci-dessus. Tim Pope aussi a un plugin qui essaye de faire la même chose avec tpope / vim-sleuth

Dhruva Sagar
la source
5
Sleuth semble fonctionner un peu mieux que detectindent, selon mon expérience, et essaiera également de déterminer les paramètres de retrait appropriés pour les nouveaux fichiers en examinant d'autres fichiers à proximité du système de fichiers.
jamessan
@ Jamessan ne le savait pas, c'est bon à savoir.
Dhruva Sagar
2
Veuillez lire notre politique sur les réponses de recommandation de plugin et ajouter quelques détails sur la façon d'utiliser exactement le plugin recommandé pour résoudre le problème.
200_success
15

Je ne l'ai pas utilisé, mais ciaranm / detectindent est peut-être ce que vous recherchez. Il semble être actif (dernière mise à jour il y a 25 jours) et a l'air de faire ce que vous voulez:

Un plugin Vim, pour détecter automatiquement les paramètres de retrait. Ce plugin ajoute une commande: DetectIndent, qui tente de définir intelligemment les options "shiftwidth", "expandtab" et "tabstop" en fonction des paramètres existants utilisés dans le fichier actif.

annuler
la source
Ce plugin n'est plus en développement actif. (La mise à jour date d' il y a 3 ans .)
Mateen Ulhaq