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?
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.
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.
Hello%$
pour les fichiers DOS (où%
est un CR et$
est unLF
)? Ce n'est pas possible avec le paramètrelist
/listchars
, et je ne peux pas vraiment trouver un moyen de le faire dans VimScript non plus ...set list
y a-t-il un moyen d'avoirCR
et deLF
montrer des personnages spécifiques peut-être?set stl+=\ [%{&ff=='mac'?'CR':&ff=='unix'?'LF':'CRLF'}]
Réponses:
Avec quelques mises en garde, vous pouvez le faire en utilisant le mode binaire de Vim. Il semble que vous souhaitiez utiliser la commande
Alternativement, vous pouvez mettre ce qui suit dans votre
.vimrc
: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:
'textwidth'
à 0'wrapmargin'
à 0'modeline'
'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'
la source
but it does quite a few other things as well
est-ce parce que le binaire est unFileType
avec quelques commandes automatiques ou est-ce une sorte de chose inévitable intégrée?FileType
appelésbinary
avec ces commandes automatiques ou était-ce simplement des éléments intégrés?:help 'binary'
. Et peut-être:help 'fileformat'
.Si vous ajoutez à votre
~/.vimrc
:Cela montrera toujours au
CR
fur^M
et àLF
mesure$
.Par défaut, vim interpréterait un fichier qui n'a que des
CRLF
fins comme un fichier DOS et s'afficheraitCRLF
comme$
. En définissantffs=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'unLF
. Vous devez insérer manuellement unCR
en tapantCTRL+V, CTRL+M
.la source