Je continue à avoir du ^Mcaractère dans mon vimrc et ça casse ma configuration.
:digraphsdans vim montre la table de digrammes à laquelle @LightnessRacesinOrbit est lié.
preg_replace('/[\x01]/', ' ' ,$str); cela vous aidera.
Je continue à avoir du ^Mcaractère dans mon vimrc et ça casse ma configuration.
:digraphsdans vim montre la table de digrammes à laquelle @LightnessRacesinOrbit est lié.
preg_replace('/[\x01]/', ' ' ,$str); cela vous aidera.
Réponses:
Unix utilise 0xA pour un caractère de nouvelle ligne. Windows utilise une combinaison de deux caractères: 0xD 0xA. 0xD est le caractère de retour chariot. ^Mse trouve être la façon dont vim affiche 0xD (0x0D = 13, M est la 13e lettre de l'alphabet anglais).
Vous pouvez supprimer tous les ^Mcaractères en exécutant ce qui suit:
:%s/^M//g
Où ^Mest entré en maintenant Ctrlet en tapant vsuivi m, puis relâchez Ctrl. Ceci est parfois abrégé en ^V^M, mais notez que vous devez le saisir comme décrit dans la phrase précédente, plutôt que de le taper littéralement.
Cette expression remplacera toutes les occurrences de ^Mpar la chaîne vide (c'est-à-dire rien). Je l'utilise pour me débarrasser des ^Mfichiers copiés de Windows vers Unix (Solaris, Linux, OSX).
^Mcaractère si le fichier a des fins de ligne incompatibles. Utilisez la commande fournie par Tomasz, puis tapez en :fileformat={unix|dos|mac}fonction du système d'exploitation que vous ciblez. S'il n'y a que quelques lignes sans le ^Mcaractère, vous le voulez probablement :fileformat=dos. Si vous modifiez des fichiers dans un éditeur autre que vim, assurez-vous qu'il est configuré pour correspondre aux fins de ligne (le Bloc-notes ne le fera pas, mais tout éditeur réputé comme Notepad ++ ou TextMate le fera).
vi, cette commande doit être saisie manuellement. Le coller simplement dans un terminal ouvert en vicours d' exécution entraînera une erreur "modèle introuvable".
:%s/\r//gpour remplacer les retours chariot dans mon fichier. Le motif ^ V ^ M est introuvable dans le fichier dans
:%s/\r//g
a travaillé pour moi aujourd'hui. Mais ma situation a peut-être été légèrement différente.
:%s/\r//suffirait.
Pour traduire la nouvelle ligne au lieu de la supprimer:
:%s/\r/\r/g
\ra un comportement différent dans la partie de recherche par rapport à la partie de remplacement. Voir stackoverflow.com/a/3834303 par exemple.
:%s/\r//g
J'ai obtenu un fichier texte généré à l'origine sur une machine Windows par le biais d'un utilisateur Mac et je devais l'importer dans une base de données Linux MySQL en utilisant le load data commande.
Bien que VIM affiche le caractère '^ M', rien de ce qui précède ne fonctionnait pour mon problème particulier, les données importaient mais étaient toujours corrompues d'une manière ou d'une autre. La solution a finalement été assez simple (après beaucoup de frustration).
Solution: exécuter dos2unix DEUX FOIS sur le même fichier a fait l'affaire! L'utilisation de la filecommande montre ce qui se passe en cours de route.
$ file 'file.txt'
file.txt: ASCII text, with CRLF, CR line terminators
$ dos2unix 'file.txt'
dos2unix: converting file file.txt to UNIX format ...
$ file 'file.txt'
file.txt: ASCII text, with CRLF line terminators
$ dos2unix 'file.txt'
dos2unix: converting file file.txt to UNIX format ...
$ file 'file.txt'
file.txt: ASCII text
Et la version finale du fichier a été parfaitement importée dans la base de données.
Sous Unix, il est probablement plus facile d'utiliser la commande «tr».
cat file1.txt | tr "\r" "\n" > file2.txt
Je les ai tous retirés avec sed:
sed -i -e 's/\r//g' <filename>
Pourrait également remplacer par une chaîne ou un caractère différent:
sed -i -e 's/\r/string/g' <filename>
Ces sedcommandes fonctionnent sur la version GNU / Linux de sedmais peuvent nécessiter des ajustements sur les BSD (y compris macOS).
Vous pouvez résoudre ce problème dans vim en utilisant
:1,$s/^V^M//g
où ^ est le caractère de contrôle.
^Mest.
C'est la seule chose qui a fonctionné dans mon cas:
:e ++ff=dos
:wq
Si cela casse votre configuration et que les caractères ^ M sont requis dans les mappages, vous pouvez simplement remplacer les caractères ^ M par <Enter>ou même <C-m>(tous deux tapés comme de simples séquences de caractères, donc 7 et 5 caractères, respectivement).
Il s'agit du seul moyen portable recommandé de stocker des codes clés spéciaux dans les mappages.
Dans FreeBSD, vous pouvez effacer ^Mmanuellement en tapant ce qui suit:
:%s/ Ctrl+ V, Puis Ctrl+ M, puis Ctrl+ à Mnouveau.
Si vous n'avez pas spécifié un autre fileformatintentionnellement (par exemple, :e ++ff=unixpour un fichier Windows), il est probable que le fichier cible ait des EOL mixtes.
Par exemple, si un fichier a des lignes avec des <CR><NL>fins et d'autres avec des
<NL>fins, et fileformatest défini unixautomatiquement par Vim lors de sa lecture, ^M (<CR>)apparaîtra. Dans de tels cas, fileformatsentre en jeu. Voir :help ffspour les détails.