Afficher CR et LF plutôt que «EOL» dans ': set list'

12

Plutôt que de choisir un caractère à afficher en tant que caractère EOL, j'aimerais que celui-ci s'affiche pour CR et LF séparément et indépendamment du fait que le fichier soit unix ou dos. Est-ce possible?

Captain Man
la source
2
Donc, si je vous comprends bien, vous voulez quelque chose comme Hello%$pour les fichiers DOS (où %est un CR et $est un LF)? Ce n'est pas possible avec le paramètre list/ listchars, et je ne peux pas vraiment trouver un moyen de le faire dans VimScript non plus ...
Martin Tournoij
1
@Carpetsmoker C'est exact. À part set listy a-t-il un moyen d'avoir CRet de LFmontrer des personnages spécifiques peut-être?
Captain Man
2
Vous pourrez peut-être les mettre en surbrillance d'une certaine couleur, mais il n'y a aucun moyen de les montrer comme des caractères spécifiques qui ne sont pas des afaik hacky.
EvergreenTree du
Je pense que CR ou LF peuvent être vus à la fois, pas les deux.
SibiCoder
1
set stl+=\ [%{&ff=='mac'?'CR':&ff=='unix'?'LF':'CRLF'}]
Antony

Réponses:

2

Avec quelques mises en garde, vous pouvez le faire en utilisant le mode binaire de Vim. Il semble que vous souhaitiez utiliser la commande

vim -b +'set list' somefile

Alternativement, vous pouvez mettre ce qui suit dans votre .vimrc:

:set binary
:set list

L'important est que le mode binaire doit être défini avant que le fichier en question ne soit lu dans un tampon. Une fois que Vim a lu le fichier, il est trop tard; cette astuce repose sur la modification de la façon dont Vim lit le fichier. Plus précisément, ce dont vous avez besoin est que Vim ne tente pas de deviner le type particulier du fichier <EOL>.

Le mode binaire fait ce que vous voulez, désactivant cette détection automatique de séparateur de ligne, mais il fait aussi bien d'autres choses:

  • met 'textwidth'à 0
  • met 'wrapmargin'à 0
  • désactive 'modeline'
  • désactive 'expandtab'

Donc, vous pourriez ne pas vouloir avoir ceci dans votre .vimrc; il peut être préférable d'utiliser la version en ligne de commande, et uniquement pour les fichiers où vous avez besoin de ce type spécial d'affichage.

Pour plus d'informations:

  • :help 'binary'
  • :help edit-binary
  • :help file-read
  • :help file-formats
  • :help 'fileformat'
Ptolemarch
la source
but it does quite a few other things as wellest-ce parce que le binaire est un FileTypeavec quelques commandes automatiques ou est-ce une sorte de chose inévitable intégrée?
Captain Man
Par cette phrase, je voulais présenter la liste qui la suit immédiatement.
Ptolemarch
Bon, je n'ai tout simplement pas cité tout ça :) Ce que je voulais dire, c'est qu'il fait ces choses parce qu'il utilise des éléments FileTypeappelés binaryavec ces commandes automatiques ou était-ce simplement des éléments intégrés?
Captain Man
1
Ah, c'est vrai. Rien de tout cela n'a quoi que ce soit à voir avec les types de fichiers (mais il est assez pris dans les formats de fichiers). cela fait partie du mode binaire lui-même. Tu vois :help 'binary'. Et peut-être :help 'fileformat'.
Ptolemarch
0

Si vous ajoutez à votre ~/.vimrc:

set ffs=unix
set list

Cela montrera toujours au CRfur ^Met à LFmesure $.

Par défaut, vim interpréterait un fichier qui n'a que des CRLFfins comme un fichier DOS et s'afficherait CRLFcomme $. En définissant ffs=unix, vous forcez vim à toujours s'ouvrir en tant que fichier Unix, et donc le CR est traité comme un caractère supplémentaire.

Remarque: Soyez prudent si vous modifiez et enregistrez des fichiers DOS. Si vous appuyez sur ENTER, il n'insérera qu'un LF. Vous devez insérer manuellement un CRen tapant CTRL+V, CTRL+M.

wisbucky
la source