2010-08-13 5 views
3

Dans TextMate il y a cette option impressionnante pour "Formatage CSS" et "Formatage CSS compressé". Cette option ne semble pas exister dans vim. Peut-être que c'est dans un plugin dont je ne suis pas au courant? Ou peut-être que j'ai besoin d'intégrer CSS Tidy en quelque sorte?Formater CSS avec VIM comme dans Textmate

Répondre

14

Vous pouvez intégrer CSS Tidy assez facilement. Puisque vous venez de TextMate, je suppose que vous êtes sur un Mac. Si vous n'avez pas encore installé de tidy CSS, je vous recommande de l'installer via un gestionnaire de paquets, comme l'excellent Homebrew.

Une fois installé, vous pouvez permettre à Vim d'utiliser CSS bien rangé pour la commande =, qui formate automatiquement le code, en ajoutant ce qui suit à votre ~/.vimrc:

autocmd filetype css setlocal equalprg=csstidy\ -\ --silent=true 

Maintenant, chaque fois que vous avez un fichier CSS ouvert, il consultera CSS Tidy pour le formater lorsque vous appellerez la commande =. Essayez-le sur un fichier CSS ouvert avec gg=G pour formater l'ensemble du document.

Consultez le CSS Tidy usage guide pour ajouter d'autres options que vous aimez, et n'oubliez pas d'échapper des espaces que vous ajoutez à la commande ~/.vimrc ci-dessus avec \.

+0

Génial. J'ai remarqué que csstidy ne semble pas câliner l'accolade d'ouverture dans le modèle de haute lisibilité, mais il ne renferme pas de propriétés dans le modèle par défaut. J'ai donc corrigé un peu le modèle par défaut pour indenter les propriétés, disponibles sur https://gist.github.com/198ee62a82f74c5e6bf2 – lkraav

+0

Notez également les retours à la ligne qui apparaissent à partir du filtrage à travers csstidy. Donc, mon autocmd est maintenant 'autocmd filetype css setlocal equalprg = csstidy \ - \ --silent = true \ --template = mydefault.tpl \ \ | \ dos2unix' – lkraav

+0

Le problème avec' equalprg = csstidy' est qu'il renvoie un vide résultat, si vous l'appelez avec juste le contenu interne d'un sélecteur (puisqu'il n'est pas CSS valide par lui-même). Je voudrais avoir une fonction, qui appelle csstidy et retombe à l'indentation interne (equalprg =), si le résultat est vide. – blueyed

Questions connexes