2010-10-05 41 views
105

Est-ce que quelqu'un connaît un éditeur de texte sous Linux qui me permet de voir les sauts de ligne et les retours chariot? Est-ce que Vim supporte cette fonctionnalité?Voir les sauts de ligne et les retours chariot dans l'éditeur

+0

REMARQUE: parfois newline ($) et le retour chariot (^ M) sont masqués dans plusieurs modèles de couleurs et lors de l'utilisation de putty dans ssh. –

Répondre

91

:set list dans Vim affichera les espaces. Les lignes de fin s'affichent sous la forme '$' et les retours à la ligne s'affichent généralement sous la forme '^M'.

+1

Même question ici: http://superuser.com/questions/97692/vim-show-line-feeds-carriage-return –

+167

Incorrect, ': set list' ne montrera pas les caractères'^M' (CRs). Fournir l'option '-b' à vi/vim fonctionnera. Ou, une fois que vim est chargé, tapez: ': e ++ ff = unix' – CaptSaltyJack

+4

@CaptSaltyJack Cela doit être sa propre réponse ..... –

68

VI affiche les nouvelles lignes (caractère LF, code x0A) en affichant le texte suivant sur la ligne suivante.

Utilisez le commutateur -b pour le mode binaire. Par exemple vi -b filename ou vim -b filename --.

Il affichera ensuite les caractères CR (x0D), qui ne sont normalement pas utilisés dans les fichiers de style Unix, comme les caractères ^M.

146

en désaccord avec la réponse officielle:

:set list sera pas Afficher les caractères^M (SNPC). Fournir l'option -b à vi/vim fonctionnera. Ou, une fois que vim est chargé, tapez :e ++ff=unix.

+1

Pourquoi ': set ff = unix' ne fonctionne pas, mais': e ++ ff = unix' le fait? –

+2

C'est la syntaxe. ': help edit' montre' e [dit]! [++ opt] [+ cmd] '. Et ': help ++ e' dit que l'argument [++ opt] peut être utilisé pour forcer la valeur de 'fileformat' [..] _. – dennis

+11

juste pour clarifier, ': set list' montre newline (' $ '),': e ++ ff = unix' montre CR ('^ M'); si vous voulez voir les deux, ': set list' puis': e ++ ff = unix' –

9

Essayez la commande suivante.

: ensemble binaire

Dans VIM, cela devrait faire la même chose que d'utiliser l'option de ligne de commande « -b ». Si vous mettez ceci dans votre fichier de démarrage (c'est-à-dire .vimrc), il sera toujours en place pour vous.

Sur de nombreux systèmes * nix, il existe une commande "dos2unix" ou "unix2dos" qui peut traiter le fichier et corriger les problèmes de fin de ligne suspects. S'il n'y a pas de problème avec les fins de ligne, les fichiers ne seront pas modifiés.

1

Je vous suggère de modifier votre fichier .vimrc, pour exécuter une liste de commandes. Modifier votre fichier vimrc, comme ceci:

cat >> ~/.vimrc <<EOF 
set ffs=unix 
set encoding=utf-8 
set fileencoding=utf-8 
set listchars=eol:¶ 
set list 
EOF 

Lorsque vous exécuter vim, les commandes sont exécutées dans Vimrc, et vous pouvez voir cet exemple:

My line with CRLF eol here ^M¶ 
8

Juste pour expliquer pourquoi :set list ne montrera pas CR comme ^M sans e ++ff=unix et pourquoi :set list n'a rien à voir avec ^M.

interne lorsque lit Vim un fichier dans sa mémoire tampon, il remplace tous les caractères de fin de ligne avec sa propre représentation (appelons-le $ « s). Pour déterminer quels caractères doivent être supprimés, il détecte d'abord dans quel format les fins de ligne sont stockées dans un fichier. S'il n'y a que CRLF '\r\n' ou seulement CR '\r' ou seulement LF '\n' caractères de fin de ligne, alors le 'fileformat' est mis à , mac et unix respectivement.

Lorsque l'option list est définie, Vim affiche $ caractère lorsque le saut de ligne s'est produit quelle que soit l'option fileformat détectée. Il utilise sa propre représentation interne des sauts de ligne et c'est ce qu'il affiche.

Maintenant, quand vous écrivez tampon sur le disque, Vim insérera caractères de fin de ligne en fonction de ce fileformat options a beed détecté, la conversion essentialy tous les $ internes « s avec des caractères appropriés. Si le fileformat se trouve être unix alors il écrira simplement \n à la place de son saut de ligne interne.

L'astuce consiste à forcer Vim à lire un fichier codé dos en tant que fichier unix. L 'effet net est qu'il supprimera tous les \n et laissera \r intacts et les affichera comme ^M dans votre tampon. Le réglage :set list indiquera en plus les fins de ligne internes comme $. Après tout, vous voyez ^M$ à la place des sauts de ligne codés dos. Notez également que :set list n'a rien à voir avec ^M. Vous pouvez le vérifier vous-même (assurez-vous d'avoir désactivé l'option list en premier) en insérant un seul CR en utilisant CTRL-V suivi du Enter en mode insertion. Après mémoire tampon d'écriture sur le disque et l'ouvrir à nouveau vous des ses ^M malgré list l'option étant mis à 0.

Vous pouvez trouver plus d'informations sur les formats de fichiers sur http://vim.wikia.com/wiki/File_format ou en tapant :help 'fileformat' dans vim.