vim apparaît sur chaque ligne se terminant par ^ M
Comment puis-je remplacer cela par un saut de ligne «normal»?
vim
line-breaks
ByteNirvana
la source
la source
Réponses:
C'est la seule chose qui a fonctionné pour moi:
Trouvé sur: http://vim.wikia.com/wiki/File_format
la source
:e ++ff=dos
suivi de:set ff=unix
convertira les terminaisons dans un format sain.Commander
Où
<Ctrl-V><Ctrl-M>
signifie taper Ctrl+ Vpuis Ctrl+ M.Explication
substitut,% = toutes les lignes
^ M caractères (le Ctrl-V est une façon Vim d'écrire le caractère Ctrl ^ et Ctrl-M écrit le M après l'expression régulière, résultant en ^ M le caractère spécial)
avec une nouvelle ligne (
\r
)Et faites-le globalement (pas seulement la première occurrence sur la ligne).
la source
:%s/<Ctrl-V><Ctrl-M>/\r/g
(où \ r remplace le ^ M par une nouvelle ligne).Sous Linux et Mac OS, les travaux suivants,
où
^V^M
signifie taper Ctrl+ V, puis Ctrl+ M.Remarque: sous Windows, vous souhaitez probablement utiliser à la
^Q
place de^V
, car par défaut, il^V
est mappé pour coller du texte.la source
%s/\r/\r/g
fonctionnait bien sur MacVim pour un fichier ne montrant qu'à la^M
fin des lignes (une longue ligne en termes MacVim). Clairement \ r signifie différentes choses dans le modèle par rapport aux pièces de rechange de cette commande.Dans
vim
, regardez le format de fichier - DOS ou Unix::set filetype=unix
:set fileformat=unix
Le fichier sera réécrit sans retour chariot (CR, ^ M).
la source
set ff=unix
comme un petit raccourci de la même manièreft
qu'un raccourci pourfiletype
Un fichier que j'avais créé avec BBEdit vu dans MacVim affichait un tas de
^M
retours de ligne au lieu de retours réguliers. Le remplacement de chaîne suivant a résolu le problème - espérons que cela aide: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'obtenir un nouveau \ r pour s'afficher correctement. Je serais intéressé de connaître les mécanismes sous-jacents de la raison pour laquelle cela fonctionne.
la source
\r
personnages\n
malgré le fait qu'il soit spécifié\r
comme remplaçant. Je ne me plains pas, c'est exactement ce que je voulais. Juste bizarre.Première utilisation
:set ff?
pour déterminer le format de fichier de votre fichier.Je suppose que cela pourrait être
unix
, alors le problème est que votre fichier a été créé enfileformat=dos
ajoutant "^ M ^ J" à la fin de la ligne mais lu avecflieformat=unix
supprimant uniquement le "^ J" de la fin de la ligne, laissant le "^ M" là.Entrez simplement
:e ++ff=dos
dans la ligne de commande Vim pour changer le format de votre fichier d'Unix en DOS. Cela devrait résoudre le problème. Sinon,:%s/\r//g
devrait vous aider.la source
:e ++ff=dos
puis:set ff=unix
et:w
Afin d'obtenir le caractère ^ M pour correspondre, j'ai dû le sélectionner visuellement, puis utiliser la commande Copier l'OS dans le presse-papiers pour le récupérer. Vous pouvez le tester en recherchant le personnage avant d'essayer la commande replace.
devrait sélectionner la première mauvaise ligne
remplacera tous les ^ M errants par des retours chariot.
Il s'agit de fonctions dans MacVim, qui est basé sur gvim 7.
ÉDITER:
Avoir à nouveau ce problème sur ma machine Windows 10, qui a Ubuntu pour Windows, et je pense que cela pose des problèmes de formatage de fichier pour vim. Dans ce cas, changer le ff en unix, mac ou dos n'a fait rien d'autre que de changer le ^ M en ^ J et vice-versa.
La solution dans ce cas:
La raison pour laquelle j'ai choisi cette voie est que je voulais m'assurer que je n'étais pas destructeur avec mon fichier. J'aurais pu,
:%s/\r$//g
mais cela aurait supprimé les retours de chariot tout de suite et aurait pu avoir des résultats inattendus. Au lieu de cela, nous convertissons le caractère CR singulier, ici un caractère ^ M, en un espace, puis supprimons tous les espaces à la fin des lignes (ce qui pour moi est un résultat souhaitable malgré tout)Désolé d'avoir relancé une vieille question à laquelle il a été répondu depuis longtemps, mais il semblait y avoir une certaine confusion et j'ai pensé que j'aiderais à clarifier certaines choses car cela revient en tête dans les recherches Google.
la source
Rien de tout cela ne fonctionnait pour moi, alors j'ai essayé ceci, qui a fonctionné:
type
:%s/
presse CTRL-VCTRL-M
type
//g
presse Enter
Donc, la commande globale dans Vim devrait ressembler à
:%s/^M//g
Ce que cela fait:
:%s
(rechercher et remplacer)/^M/
(ce symbole)/
(sans caractères)g
(globalement).la source
^ M est récupéré par Ctrl+ Vet M, tout comme
la source
Sans avoir besoin d'utiliser Ctrl:
:%s/\r$//
la source
Chose simple qui a fonctionné pour moi
la source
Je l'ai fait avec sed:
sed -i -e 's/\r/\n/g' filename
la source
sed -e 's/\r/\n/g' <<< 'over and over'
->oven and oven
sed
mais pas pour BSDsed
(comme on le trouve sur OSX). Quiconque corrige les sauts de ligne fonctionne probablement avec un mélange de systèmes d'exploitation, il est donc utile d'être clair sur le moment où la réponse fonctionnera.Qu'en est-il juste:
:%s/\r//g
cela a totalement fonctionné pour moi.Cela ne fait que nettoyer la fin de ligne de toutes les lignes, il supprime le ^ M et c'est tout.
la source
Il existe de nombreuses autres réponses à cette question, mais la solution suivante me convient le mieux, car j'avais besoin d'une solution en ligne de commande:
Explication:
myfile
:e ++ff=dos
pour forcer un rechargement de tout le fichier en tant que fins de ligne de dos.:w ++ff=unix
pour écrire le fichier à l'aide des fins de ligne Unixla source
Ctrl+ Mminimise ma fenêtre, mais Ctrl+ Enterinsère en fait un
^M
caractère. Je devais également être sûr de ne pas retirer la Ctrlclé entre les pressions.La solution pour moi était donc:
Où
<Ctrl-V><Ctrl-Enter>
signifie appuyer et maintenir enfoncé Ctrl , appuyer et relâcher V, appuyer et relâcher Enter, puis relâcher Ctrl .Si vous travaillez sur un fichier généré par Windows
La solution ci-dessus ajoutera une ligne supplémentaire entre les lignes existantes, car il y a déjà un invisible
\r
après le^M
.Pour éviter cela, vous souhaitez supprimer les
^M
caractères sans les remplacer.Où
%
signifie «dans ce tampon»,s
signifie «remplacer»,/
signifie «(trouver) le modèle suivant»,<Ctrl-V><Ctrl-Enter>
fait référence aux touches à appuyer pour obtenir le^M
caractère (voir ci-dessus),//
signifie «sans rien» (ou «avec le modèle»). entre ces deux barres obliques, qui est vide "), etg
est un indicateur signifiant" globalement ", par opposition à la première occurrence d'une ligne.la source
Cela a fonctionné pour moi:
\n
fin de ligne)Donc en vim:
la source
Dans mon cas,
Rien au-dessus n'a fonctionné, j'avais un fichier CSV copié sur la machine Linux à partir de mon mac et j'ai utilisé toutes les commandes ci-dessus mais rien n'y fait mais celui ci-dessous
J'avais un fichier dans lequel ^ M caractères étaient intercalés entre les lignes quelque chose comme ci-dessous
la source
Alternativement, il existe des utilitaires open-source appelés dos2unix et unix2dos qui font exactement cela. Sur un système Linux, ils sont probablement installés par défaut; pour un système Windows, vous pouvez les télécharger sur http://www.bastet.com/ entre autres.
la source
où ^ M est tapé en appuyant simultanément sur les 3 touches, ctrl + v + m
la source
utilisez l'utilitaire dos2unix si le fichier a été créé sur Windows, utilisez l'utilitaire mac2unix si le fichier a été créé sur mac. :)
la source
Utilisez l'une de ces commandes:
Ou
la source
Cela a fonctionné pour moi:
la source
Pour enregistrer les frappes , vous pouvez éviter de taper Ctrl+ VCtrl+ Men le plaçant dans un mappage. Ouvrez simplement un fichier contenant un caractère ^ M, tirez-le et collez-le dans une ligne comme celle-ci dans votre .vimrc:
la source
Aucune de ces suggestions ne fonctionnait pour moi, ayant réussi à obtenir une charge de
^M
sauts de ligne tout en travaillant avec vim et eclipse. Je soupçonne que j'ai rencontré un cas extérieur mais au cas où cela aiderait quelqu'un que j'ai fait.Et ça a réglé mon problème
la source
Si vous tapez en
^M
utilisantShift+6 Caps+M
il n'acceptera pas.Vous devez taper
ctrl+v ctrl+m
.la source
^M
donne des sauts de ligne indésirables. Pour gérer cela, nous pouvons utiliser lased
commande comme suit:la source
Retirez-le simplement
set binary
dans votre .vimrc!la source
Pour utiliser
sed
sur MacOS, procédez comme suit:Explication: La
$'STRING'
syntaxe ici se rapporte au shell bash. Les Mac ne traitent pas\r
comme un caractère spécial. En citant la chaîne de commande dans,$''
vous dites au shell de le remplacer\r
par le\r
caractère réel spécifié dans la norme ANSI-C.la source
"Cette fonction conserve la liste des sauts
la source
J'ai passé un après-midi à me battre avec \ n ctrl-v 012 (les deux me fournissant null). & a travaillé sur ce fil jusqu'à ce que j'atteigne celui de métagraphe.
\r
a bien fonctionné pour moi!tourné quelque chose comme ça:
en quelque chose comme ça:
La magie. Je suis profondément reconnaissant
la source