J'essaie de créer un script Vim simple qui créerait des plis de haut niveau très compacts pour les fichiers c. Idéalement, si elle a été exécutée sur ce code:Compact C Pliage dans Vim
static void funca(...)
{
...
}
/* Example comment */
static void funcb(...)
{
...
}
Ensuite, il créerait des plis qui ressemblerait à ceci fermé:
+-- x Lines: static void funca(...)----------------------
+-- x Lines: static void funcb(...)----------------------
Donc, fondamentalement, ce serait comme foldmethod = syntaxe avec foldlevel = 1 , sauf que chaque pli commencerait une ligne plus haut et s'étendrait plus bas pour inclure toutes les lignes vides suivantes.
Je sais comment faire un de ces plis (en supposant foldmethod = manuel):
/^{<cr>kVnn?^$<cr>zf
Mais je ne sais pas comment le mettre en fonction. C'est mon effort:
function Cfold()
set foldmethod=manual " Manual folds
ggzE " Delete all folds
while (/^{<cr>) " Somehow loop through each match
kVnn?^$<cr>zf " This would work fine except for the last function
endwhile
endfunction
map <Leader>f :call Cfold()<cr>
Mais ce n'est pas valide, je ne suis pas entièrement sûr comment fonctionnent les fonctions. En outre, cela ne fonctionnera pas pour la dernière fonction du fichier, car il ne retrouvera pas '^ {' à nouveau. Si quelqu'un pouvait m'aider à faire fonctionner cela, et ajouter d'une façon ou d'une autre un cas pour la dernière fonction dans un fichier, je serais extrêmement reconnaissant.
Merci à l'avance :)
Merci beaucoup :), c'était exactement ce que je cherchais. Il a fallu un peu de modification, mais je l'ai fait travailler comme je le veux, et peut enfin enlever les marqueurs de mes projets C. Très apprécié. –
Salut vincent, pourriez-vous partager votre version modifiée? merci –
Hmm ... J'ai essayé le code vim ci-dessus, mais il ne se comporte pas bien avec un commentaire multi-ligne au-dessus de la fonction ... – chutsu