Utiliser vim comme pager pour les pages de man

Tags: #<Tag:0x00007f4e3b27d108> #<Tag:0x00007f4e3b27cf78>

Bonjour,

Contexte
Je viens de mettre à jour depuis Bookworm à Trixie. Sous Bookworm, j’utilisais déjà Vim comme pager avec :

/bin/sh -c "col -b | vim -c 'set ft=man ts=8 nomod nolist nonu noma' -c 'nnoremap q ZZ' -"

Et sous Bookworm, ça foctionnait bien, le rendu bon, avec même de la coloration syntaxique.

Le problème
Depuis mon passage à Trixie, me donne un résultat fort étrange avec des 1m, 2m, 3m, à l’endroit des commandes Troff, au lieux de les interpréter comme il faut.

Voici à quoi ça ressemble :

4mLS24m(1)                                                                             Commandes de                                                                                            l'utilisateur                                                                           4mLS24m(1)

 1mNOM0m
        ls - Afficher le contenu de répertoires

 1mSYNOPSIS0m
        1mls 22m[4mOPTION24m]... [4mFICHIER24m]...

 1mDESCRIPTION0m
        Afficher les informations des 4mFICHIER24ms (du répertoire courant par défaut). Les entrées sont triées alphabétiquement si aucune des options 1m-cftuvSUX 22mou 1m--sort 22mn'est      indiquée.

        Les paramètres obligatoires pour les options de forme longue le sont aussi pour les options de forme courte.

        1m-a22m, 1m--all0m
               inclure les entrées débutant par « . »

        1m-A22m, 1m--almost-all0m
               omettre les fichiers « . » et « .. »

Question
Comment donc ré-obtenir un rendu correcte des pages de man en utilisant Vim comme pager ? Ça marchait pourtant bien sous Bookworm, il n’y a pas de raison que ça ne le soit pas sous Trixie.

Merci par anticipation.

Ce sont des codes couleurs ANSI.

En effet…
Et l’utilisation du binaire col et de l’option -b devrait résoudre ce problème.
C’est un détail que j’ai découvert récemment, mais qui est connu depuis longtemps apparemment, et très bien expliqué ( les infos sont en anglais) :

Dès que tu te sers d’un pager différent à celui de man, qui est capable de comprendre les différents code ANSI, (échappements, couleurs), il te faut trouver un moyen de les lire correctement avec le binaire qui te sert de pager ; col semble être la réponse :wink:

Le manpage sous OpenBSD explique ceci :

     -c      Copy the manual page to the standard output instead of using
             less(1) to paginate it.  This is done by default if the standard
             output is not a terminal device.

             When using -c, most terminal devices are unable to show the
             markup.  To print the output of man to the terminal with markup
             but without using a pager, pipe it to ul(1).  To remove the
             markup, pipe the output to col(1) -b instead.

le même manpage sous Debian ne le mentionne même pas (ou alors, je suis aveugle).

Pourquoi ne pas mettre ces réglages dans /etc/vimrc ou /home//.vimrc ?