Sigo obteniendo ^M
caracteres en mi vimrc y rompe mi configuración.
:digraphs
dentro de vim, se muestra la tabla de digrafos a la que @LightnessRacesinOrbit se vincula.
preg_replace('/[\x01]/', ' ' ,$str);
Espero que ayude.
Sigo obteniendo ^M
caracteres en mi vimrc y rompe mi configuración.
:digraphs
dentro de vim, se muestra la tabla de digrafos a la que @LightnessRacesinOrbit se vincula.
preg_replace('/[\x01]/', ' ' ,$str);
Espero que ayude.
Respuestas:
Unix usa 0xA para un personaje de nueva línea. Windows usa una combinación de dos caracteres: 0xD 0xA. 0xD es el carácter de retorno de carro. ^M
resulta ser la forma en que vim muestra 0xD (0x0D = 13, M es la decimotercera letra del alfabeto inglés).
Puede eliminar todos los ^M
caracteres ejecutando lo siguiente:
:%s/^M//g
Donde ^M
se ingresa presionando Ctrly escribiendo vseguido por m, y luego soltando Ctrl. Esto a veces se abrevia como ^V^M
, pero tenga en cuenta que debe ingresarlo como se describe en la oración anterior, en lugar de escribirlo literalmente.
Esta expresión reemplazará todas las apariciones de ^M
con la cadena vacía (es decir, nada). Utilizo esto para deshacerme de los ^M
archivos copiados de Windows a Unix (Solaris, Linux, OSX).
^M
carácter si el archivo tiene finales de línea no coincidentes. Use el comando proporcionado por Tomasz, luego escriba :fileformat={unix|dos|mac}
según el sistema operativo al que se dirija. Si solo hay unas pocas líneas sin el ^M
carácter, probablemente quieras :fileformat=dos
. Si está editando archivos en un editor que no sea vim, asegúrese de que esté configurado para coincidir con los finales de línea (Notepad no lo hará, pero cualquier editor de buena reputación como Notepad ++ o TextMate sí).
vi
deben escribir ese comando manualmente. Simplemente pegándolo en un terminal abierto con vi
ejecución dará como resultado un error de "patrón no encontrado".
:%s/\r//g
para reemplazar los retornos de carro en mi archivo. No se pudo encontrar el patrón ^ V ^ M en el archivo en el que tenía un montón de caracteres ^ M.
:%s/\r//g
Trabajó para mí hoy. Pero mi situación puede haber sido ligeramente diferente.
:%s/\r//
bastaría.
Para traducir la nueva línea en lugar de eliminarla:
:%s/\r/\r/g
\r
tiene un comportamiento diferente en la parte de búsqueda frente a la parte de reemplazo. Ver stackoverflow.com/a/3834303 por ejemplo.
:%s/\r//g
Obtuve un archivo de texto originalmente generado en una máquina Windows por medio de un usuario de Mac y necesitaba importarlo a una base de datos Linux MySQL usando el load data
comando.
Aunque VIM mostró el carácter '^ M', ninguno de los anteriores funcionó para mi problema particular, los datos se importarían, pero siempre estaban dañados de alguna manera. La solución fue bastante fácil al final (después de mucha frustración).
Solución: ¡Ejecutar dos2unix
TWICE en el mismo archivo funcionó! El uso del file
comando muestra lo que está sucediendo en el camino.
$ 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
Y la versión final del archivo se importó perfectamente a la base de datos.
En Unix, probablemente sea más fácil usar el comando 'tr'.
cat file1.txt | tr "\r" "\n" > file2.txt
Los eliminé todos con sed:
sed -i -e 's/\r//g' <filename>
También podría reemplazar con una cadena o carácter diferente:
sed -i -e 's/\r/string/g' <filename>
Esos sed
comandos funcionan en la versión de GNU / Linux, sed
pero pueden necesitar ajustes en BSD (incluido macOS).
Puedes arreglar esto en vim usando
:1,$s/^V^M//g
donde ^ es el carácter de control.
^M
es.
Esto es lo único que funcionó en mi caso:
:e ++ff=dos
:wq
Si rompe su configuración, y los caracteres ^ M son necesarios en las asignaciones, simplemente puede reemplazar los caracteres ^ M por <Enter>
o incluso <C-m>
(ambos escritos como secuencias de caracteres simples, por lo que 7 y 5 caracteres, respectivamente).
Esta es la única forma recomendada y portátil de almacenar códigos de teclas especiales en asignaciones
En FreeBSD, puede borrarlo ^M
manualmente escribiendo lo siguiente:
:%s/
Ctrl+ V, luego Ctrl+ M, luego Ctrl+ Mnuevamente.
Si no especificó una fileformat
intención diferente (por ejemplo, :e ++ff=unix
para un archivo de Windows), es probable que el archivo de destino tenga EOL mixtos.
Por ejemplo, si un archivo tiene algunas líneas con <CR><NL>
terminaciones y otras con
<NL>
terminaciones, y Vim lo fileformat
configura unix
automáticamente al leerlo, ^M (<CR>)
aparecerá. En tales casos, fileformats
entra en juego. Ver :help ffs
para los detalles.