Vim affiche sur chaque ligne se terminant par ^M
Comment puis-je le remplacer par un saut de ligne "normal" ?
Vim affiche sur chaque ligne se terminant par ^M
Comment puis-je le remplacer par un saut de ligne "normal" ?
:%s/<Ctrl-V><Ctrl-M>/\r/g
Où <Ctrl-V><Ctrl-M>
type de moyen Ctrl + V puis Ctrl + M .
:%s
substitut, % = toutes les lignes
<Ctrl-V><Ctrl-M>
Caractères ^M (le Ctrl-V est une façon pour Vim d'écrire le caractère Ctrl ^ et le Ctrl-M écrit le M après l'expression régulière, ce qui donne le caractère spécial ^M)
/\r/
avec une nouvelle ligne ( \r
)
g
Et faites-le globalement (pas seulement la première occurrence sur la ligne).
Cela ne fonctionne pas, du moins sur Ubuntu. J'obtiens l'erreur suivante E486: Pattern not found: <Ctrl-V><Ctrl-M>
Sous Linux et Mac OS, la méthode suivante fonctionne,
:%s/^V^M/^V^M/g
donde ^V^M
type de moyen Ctrl + V alors Ctrl + M .
Note : sous Windows, vous voudrez probablement utiliser <code>^Q</code> au lieu de <code>^V</code> puisque par défaut <code>^V</code> est mis en correspondance avec le texte à coller.
Pourquoi est-ce que ça a été descendu ? Ça marche, même lorsque votre fichier est écrasé sur une ligne parce qu'il n'a pas le bon bout de ligne.
Cela fonctionne vraiment et c'est exactement ce dont vous avez besoin lorsque tout votre texte est sur une seule ligne.
Use :set fileformat=unix Pour la plupart des configurations, filetype ne modifie que le type de syntaxe utilisé.
Cela a corrigé le bug que j'avais... Vim commençait à penser que mon fichier au format UNIX était Windows et les lignes nouvellement modifiées affichaient ^M dans le diff git.
Doit être dépendant du système. Aujourd'hui, celui-ci a fonctionné. La commande set se fait dans vim, btw.
Un fichier que j'avais créé avec BBEdit vu en MacVim affichait un tas de ^M
des retours de ligne au lieu des retours normaux. Le remplacement de la chaîne de caractères suivant a résolu le problème - j'espère que cela vous aidera :
:%s/\r/\r/g
C'est intéressant parce que je remplace les sauts de ligne par le même caractère, mais je suppose que Vim a juste besoin d'un nouveau \r pour s'afficher correctement. Je serais intéressé de connaître les mécanismes sous-jacents qui expliquent pourquoi cela fonctionne.
Les fonctions de recherche ont tendance à accepter des règles plus larges pour reconnaître les séquences de fin de ligne. Mais \r a une signification spécifique lorsqu'il est écrit sous forme de données.
Cela a fonctionné pour moi dans gVim Windows pour régler un fichier qui n'avait pas de sauts de ligne, juste beaucoup de ^M à la place.
De toutes les solutions proposées sur cette page, c'est le seul modèle qui a fonctionné pour moi en supprimant ^M d'un fichier csv. En utilisant MacVim.
D'abord, utilisez :set ff?
pour savoir quel est le format de votre fichier.
Je suppose que ça pourrait être unix
alors le problème est que votre fichier a été créé avec fileformat=dos
ajouter "^M^J" à la fin de la ligne mais lire avec flieformat=unix
en enlevant seulement le "^J" de la fin de la ligne, en laissant le "^M" là.
Il suffit de saisir :e ++ff=dos
dans la ligne de commande de Vim pour changer le format de votre fichier d'unix à dos. Cela devrait résoudre le problème. Si ce n'est pas le cas, :%s/\r//g
devrait vous aider.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
0 votes
Duplicata possible de Convertir les terminaisons de ligne DOS en terminaisons de ligne Linux dans vim
3 votes
Veuillez modifier la solution à la changement de format de fichier parce que c'est la solution la plus propre.
1 votes
Je sais que cette question concerne vim, mais d'autres recherches sur Google ont également abouti à ce fil de discussion. Donc, si vous avez Eclipse installé sur votre système, vous pouvez convertir le délimiteur de ligne pour un seul fichier ou une arborescence complète de fichiers en quelques clics : stackoverflow.com/a/7019737/1364747
0 votes
J'aime la façon dont vous qualifiez les sauts de ligne normaux de "normaux", contrairement aux sauts de ligne ^M :-)