Comment faire en sorte que Vim affiche les couleurs comme indiqué par les codes de couleurs?


61

En bref, je suis dans un effort pour remplacer lessavec vim( vimpager). J'ai les paramètres pour les scripts à cracher des couleurs (et gras et tout bien) chaque fois qu'ils le peuvent. lesscomprend les codes de couleur et les affiche bien. Comment puis-je faire vimanalyser les codes et afficher les couleurs / l'audace de la même manière less?

Réponses:


45

Deux réponses:

Un petit exemple: vous voulez utiliser le script vim AnsiEsc.vim . Il dissimulera les séquences d'échappement ANSI réelles dans votre fichier et utilisera la coloration syntaxique pour colorer le texte de manière appropriée. Le problème avec l’utilisation de cela dans un pager est que vous devrez faire en sorte que vim sache quand l’utiliser. Je ne sais pas si vous pouvez simplement le charger, ou s'il va entrer en conflit avec d'autres fichiers de syntaxe. Vous devrez expérimenter avec.

Réponse longue: le mieux que vous puissiez espérer est une solution partielle non portable. Less ne comprend pas réellement les séquences d’échappement du terminal, car celles-ci dépendent en grande partie du terminal, mais elles peuvent moins les reconnaître (un sous-ensemble) et sauront les transmettre au terminal, si vous utilisez la -r(ou-R) option. Le terminal interprétera les séquences d'échappement et modifiera les attributs du texte (couleur, gras, souligné, etc.). Vim, étant un éditeur plutôt qu'un pager, ne transmet pas simplement des caractères de contrôle bruts au terminal. Il doit les afficher d'une manière ou d'une autre pour que vous puissiez les éditer. Vous pouvez utiliser d'autres fonctionnalités de vim, telles que la dissimulation et la coloration syntaxique pour masquer les séquences et les utiliser pour définir les couleurs du texte. Toutefois, il ne gérera toujours qu'un sous-ensemble des séquences de terminaux et ne fonctionnera probablement pas sur certains terminaux. .

Ce n'est vraiment qu'un des nombreux problèmes que vous rencontrerez lorsque vous essayez d'utiliser un éditeur de texte comme pageur.


Pour résumer, vous devez écrire une partie d'un émulateur de terminal dans Vim, la partie qui gère les séquences d'échappement de terminal présentes dans votre entrée.
Gilles 'SO- arrête d'être méchant'

Merci, je pense que j'abandonne. Si ce n'est pas facile, cela n'a plus beaucoup de sens.
Phunehehe

1
Le lien @ JanHlavacek est rompu :(
Nitrodist

19
@ Nitrodist: less -r FILE( source )
Adobe

1
Il semble que le lien de Jan a été déplacé vers linux-tips.com/t/how-to-enable-syntax-highlighting-in-less/208
Timothy Zorn le

2

Maintenant, avec vim 8, vous pouvez utiliser le mode terminal, :terminalpuis le faire dans ce terminal cat myfileet revenir au mode normal avec Ctrl-w N. Cela affichera correctement les codes de couleur ANSI. En automatisant ces étapes et en lisant à partir d'une entrée standard au lieu d'un fichier, il devrait être possible d'utiliser vim pour remplacer moins.


Cela ne répond pas du tout à la question. Comment cela remplace- lesst-il?
ossbuntu

@ossbuntu Si vous exécutez ls --color=always >/tmp/colored.txtpuis dans vim :terminal cat /tmp/colored.txtsuivi de :only, alors vous aurez la sortie ls bien colorée dans vim comme le ferait moins. Comme vim prend en charge le passage de commandes sous forme d'arguments de ligne de commande au démarrage, il est clairement possible de bidouiller pour que cette solution fonctionne less
correctement
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.