J'essaie de créer un retrait automatique de vim avec des tabulations et d'aligner avec des espaces, mais en fait, le retrait de vim avec des tabulations et de remplir l'alignement avec des tabulations + des espaces blancs.
Vim le fait:
(chaque bloc est un onglet)
{
>--long a = 1,
>-->--..b = 2,
>-->--..c = 3;
}
Peut le faire:
{
>--long a = 1,
>--.....b = 2,
>--.....c = 3;
}
Donc, je pense qu'il y a beaucoup de questions sur le sujet des onglets et des espaces, mais aucun d'entre eux ne fournit une solution Just Works:
- /programming/8493705/vim-use-tabs-for-indentation-spaces-for-alignment-with-c-source-files
- /programming/29208431/vim-indent-with-tabs-align-with-spaces
- /programming/6504507/vim-indenting-and-alignment-combining-spaces-and-tabs
En fait, j'utilise:
set ai
set cindent
set cinoptions=(0,:0,u0,U0,g0)
J'ai essayé le plugin Smart Tab , qui semble bien fonctionner, mais quand j'essaye, gg=G
j'obtiens des erreurs étranges:
Error detected while processing function CtabRedoIndent..<SNR>12_CheckAlign:
line 11:
E108: No such variable: "b:ctab_lastalign"
Press ENTER or type command to continue
Error detected while processing function CtabRedoIndent:
line 10:
E170: Missing :endwhile
Cette discussion semble être très ancienne, alors maintenant, 2015, il existe une solution officielle pour y faire face?
Réponses:
Faire cela de manière vraiment automatique est difficile. Vim ne sait pas ce qu'est "l'indentation" et ce qu'est "l'alignement"; et certaines personnes peuvent être en désaccord sur ce qui constitue exactement l'indentation et l'alignement.
Cela étant dit, le plugin Smart Tabs est conçu pour faire ce que vous voulez; J'ai trouvé que cela fonctionne assez bien pour les fichiers C, mais a un certain nombre de mises en garde; il casse les fichiers Python, par exemple, et fait parfois des choses inattendues (pour moi, en tout cas) pour les fichiers C.
En regardant la source, je ne peux pas vraiment comprendre comment cela fonctionne en 5 minutes, et combiné avec le fait qu'il casse certaines choses, je dois vous dire de procéder avec prudence ...
la source
Le plug-in Smart Tabs que vous avez mentionné est à peu près aussi performant que possible. Au début, je suis tombé sur la même erreur que vous avez fait et j'ai abandonné, mais j'ai finalement passé quelques minutes pour le réparer. Essayez d'appliquer le patch suivant:
J'ai découvert plus tard que quelqu'un avait suggéré un correctif similaire dans la section wiki Smart Tabs . Hélas, il n'y a pas eu de nouvelle version.
la source
L'indentation dans vim s'effectue simplement à l'aide du script suivant
Script pour effectuer l'indentation d'un seul fichier
la source