web-dev-qa-db-fra.com

gVim montrant un retour chariot (^ M) même lorsque le mode de fichier est explicitement DOS

J'utilise gVim sous Windows. Mon code affiche ^M caractères à la fin des lignes. J'ai utilisé :set ff=dos en vain. Les caractères ^M restent pour les lignes existantes, mais ne s'affichent pas pour les nouvelles lignes que j'ai entrées. J'ai changé de mode pour mac (affiche ^J caractères) et unix (affiche également ^M caractères) et de nouveau pour DOS. Quelqu'un d'autre a-t-il vu cela?

75
Jerph

Cela se produit lorsque vous avez un mélange de fins de ligne Windows et de Unix. Si vous avez 100 lignes, 99 sont\r\n et l’une est\n, vous verrez 99 ^ M caractères. La solution consiste à trouver cette ligne et à la remplacer. Ou exécutez dos2unix sur le fichier. Vous pouvez remplacer les fins de ligne Windows par:

:%s/\r\(\n\)/\1/g

139
richq

Vous pouvez aussi lancer:

:e ++ff=dos

Pour supprimer le ^M: Voir Format de fichier - Vim Tips Wiki .

41
beckelmw

J'utilise généralement les éléments suivants pour nettoyer les fins de ligne:

:g/^M$/s///

Pour obtenir le ctrl-M, je tape habituellement ctrl-Q, puis ctrl-M et il le met. un plus facile à retenir que rq 's.

N'oubliez pas de faire aussi :set ff=dos, sinon vous finirez par enregistrer avec les fins de ligne UNIX.

19
Evan

Je sais que cela a déjà été répondu, mais un truc que j'utilise est 

:%s/\r/\r/g

Ceci remplace les retours chariots unix par le CRLF de Windows. Vient d'ajouter au cas où quelqu'un aurait des problèmes.

15
dsrekab

Vous pouvez ignorer ces caractères!

mettez ceci dans votre vimrc

correspond à Ignorer/\ r $ /

6
IvanM

En fait, ce qui a fonctionné pour moi (sur les fenêtres 64 bits, gVIM: 7.2) était: 

:set ffs=dos

pas seulement: ff

4
ra170

Exécution de Vim 7.3 sur Windows 7. J'ai utilisé la commande suivante:

:%s/^M/\r/g

Pour créer le ^ M, j'ai tapé CTRL + Q puis CTRL + M.

4
ddelrio1986

C’est probablement un peu simple pour beaucoup d’entre vous, mais c’est utile.

Sur la base de la réponse de richq, j’ai trouvé ces informations utiles dans mon vimrc. Notez que le second est commenté normalement car cela rend dd un peu déroutant puisque Vim attendra qu’un autre trait de touche s’élimine s’il s’agit de la commande ex mappée.

une fonction! D2u () 
 exécutez '% s/\ r\(\ n \)/\ 1/g' 
 endfunction 
 "map d2u:% s/\ r\(\ n \)/\ 1/g 

Le premier est exécuté en tapant call D2u() dans ex et le second en appuyant sur D2u en mode édition.

2
Peter Shannon

Ce sont des fins de ligne CR supplémentaires généralement dues à l'utilisation d'un fichier sur des systèmes UNIX/DOS mixtes.

La réponse la plus courte possible pour supprimer un seul ^ M à la fin de chaque ligne, et ce que j'utilise, est la suivante:

:%s/\r

qui équivaut à:

:%s/\r//

mais les barres obliques finales ne sont pas obligatoires (elles sont supposées).

2
thebriguy

essayé beaucoup de choses, mais ce qui suit a fonctionné

:%s/\r/\r/g

note: utilisez g si vous voulez l'effet sur tout le fichier

0
Atul Subhash