Lorsque j'ouvre le fichier vim
, je vois des ^M
caractères étranges .
Malheureusement, le moteur de recherche préféré au monde ne fonctionne pas bien avec les caractères spéciaux dans les requêtes, je vous pose donc la question suivante:
Quel est ce
^M
personnage?Comment aurait-il pu arriver là?
Comment puis-je m'en débarrasser?
vim
special-characters
Christoph Wurm
la source
la source
help digraph-table
.Réponses:
Le
^M
est un caractère de retour de chariot. Si vous voyez cela, vous voyez probablement un fichier provenant du monde DOS / Windows, où une fin de ligne est marquée par une paire retour chariot / nouvelle ligne, alors que dans le monde Unix, fin de ligne est marqué par une nouvelle ligne.Lisez cet article pour plus de détails, ainsi que l'entrée Wikipedia pour newline .
Cet article explique comment configurer vim pour éditer de manière transparente des fichiers avec différents marqueurs de fin de ligne.
Si vous avez un fichier avec
^M
à la fin de certaines lignes et que vous voulez vous en débarrasser, utilisez ceci dans Vim:(Appuyez sur Ctrl+ V Ctrl+ Mpour l'insérer
^M
.)la source
:%s/^M/\r/g
plutôt de supprimer^M
et de remplacer^M
par un caractère de nouvelle ligne\r
. Sans cela%
, la commande s'applique uniquement à la ligne en cours. Et je suis tombé sur des exemples où il^M
n’est pas au bout de la ligne, tels queThe first line.^MThe second line.
:%s/^M/
^M
est utilisé sous UNIX\n
est utilisé dans Unix, ce qui est correct. C'est le code ASCII10
, autrement connu sous le nom^J
.La plupart des systèmes d'exploitation UNIX ont un utilitaire appelé
dos2unix
qui convertira le CRLF en LF. Les autres réponses couvrent la question "que sont-ils".la source
Pour ce faire, utilisez une commande plus simple:
Cette commande fonctionne également avec les modèles de chemin, par exemple
Si cela ne fonctionne pas, essayez d'utiliser un mode différent:
-c
Définir le mode de conversion. Où CONVMODE est l' un:ascii, 7bit, iso, mac
avecascii
être la valeur par défaut.la source
Cela a fonctionné pour moi
La commande: e ++ ff = dos indique à Vim de relire le fichier, forçant le format de fichier DOS. Vim supprimera les fins de ligne CRLF et LF uniquement, ne laissant que le texte de chaque ligne dans la mémoire tampon.
ensuite
et enfin
la source
ff
référence au format de fichier? Qu'en est- il++ff
?La commande est un autre moyen de se débarrasser des retours chariots
tr
.J'ai un petit script qui ressemble à ceci
la source
Vous pouvez nettoyer cela avec
sed
:L'astuce consiste à saisir correctement le retour de chariot. En règle générale, vous devez taper
C-v C-m
pour saisir un retour chariot littéral. Vous pouvez également faire en sorte que sed travaille en place avecla source
Qu'est-ce que c'est ^ M?
Le ^ M est un caractère de retour de chariot. Si vous voyez cela, vous voyez probablement un fichier provenant du monde DOS / Windows, où une fin de ligne est marquée par une paire retour chariot / nouvelle ligne, alors que dans le monde Unix, fin de ligne est marqué par une nouvelle ligne.
Comment cela aurait-il pu arriver là?
Quand il y a changement de format de fichier.
Comment puis-je m'en débarrasser?
ouvrez votre dossier avec
enregistrez-le avec la commande suivante
la source
Dans mon cas,
Rien ci-dessus n'a fonctionné, j'ai eu un fichier CSV copié sur une machine Linux à partir de mon mac et j'ai utilisé toutes les commandes ci-dessus, mais rien n'a aidé sauf celui ci-dessous
J'avais un fichier dans lequel ^ M caractères étaient placés entre les lignes, comme ci-dessous
la source
Vous pouvez utiliser Vim en mode Ex:
-b
mode binaire%
sélectionner toutes les ligness
remplacer\r
retour chariotx
sauver et fermerla source
Ajoutez la ligne suivante à votre ~ / .vimrc
Ensuite, lorsque vous avez un fichier avec les fins de ligne Windows, exécutez la commande ": Tounix".
la source
Dans le passé, j'ai vu que même les fichiers de configuration n'étaient pas analysés correctement et se plaignaient de blancs, mais si vous faites une liste définie, elle ne montrera pas les blancs, grep nomfichier [[espace]] vous montrera ^ M
c'est quand
dos2unix file
aidela source