gVim montrant le retour chariot (^ M) même lorsque le mode 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 restnt pour les lignes existantes, mais ne s’affichent pas pour les nouvelles lignes que je saisis. J’ai changé de mode pour mac (montre les caractères ^J ) et unix (montre aussi les caractères ^M ) et dos à dos. Quelqu’un d’autre a-t-il vu cela?

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

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

Vous pouvez également exécuter:

 :e ++ff=dos 

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

J’utilise habituellement les éléments suivants pour nettoyer mes fins de ligne:

 :g/^M$/s/// 

Pour obtenir le ctrl-M, je tape habituellement ctrl-Q, puis ctrl-M et il le place. (Dans certains environnements, il peut s’agir de Ctrl-V puis de Ctrl-M) un plus facile à retenir que rq .

N’oubliez pas de le faire :set ff=dos ou vous finirez par enregistrer avec les fins de ligne UNIX.

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

 :%s/\r/\r/g 

Cela remplace le retour chariot unix par le CRLF Windows. Juste ajouté au cas où quelqu’un d’autre avait des problèmes.

Vous pouvez ignorer ces caractères!

mettez ceci dans votre vimrc

match Ignorer / \ r $ /

En fait, ce qui a fonctionné pour moi (sur Windows 64 bits, gVIM: 7.2) était:

 :set ffs=dos 

pas seulement: ff

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

 :%s/^M/\r/g 

Pour créer le ^ MI tapé en CTRL + Q puis CTRL + M.

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é celles-ci utiles dans mon vimrc. Notez que le second est mis en commentaire normalement car cela rend un peu déroutant le dd puisque Vim attendra un autre coup de touche pour savoir si c’est la commande ex mappée.

 fonction!  D2u ()
     exécuter '% s / \ r \ (\ n \) / \ 1 / g'
 fonction finale
 "mappe 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.

Ce sont des fins de ligne CR supplémentaires en raison de l’utilisation d’un fichier sur des systèmes mixtes UNIX / DOS.

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

 :%s/\r 

ce qui équivaut à:

 :%s/\r// 

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

essayé beaucoup de choses, mais les suivantes ont travaillé

 :%s/\r/\r/g 

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