Cuando abro el archivo vim
, veo ^M
caracteres extraños .
Desafortunadamente, el motor de búsqueda favorito del mundo no funciona bien con caracteres especiales en las consultas, por lo que pregunto aquí:
¿Qué es este
^M
personaje?¿Cómo pudo haber llegado allí?
¿Como me deshago de esto?
vim
special-characters
Christoph Wurm
fuente
fuente
help digraph-table
.Respuestas:
El
^M
es un personaje de retorno de carro. Si ve esto, probablemente esté viendo un archivo que se originó en el mundo DOS / Windows, donde un final de línea está marcado por un par de retorno de carro / nueva línea, mientras que en el mundo Unix, fin de línea está marcado por una sola línea nueva.Lea este artículo para más detalles, y también la entrada de Wikipedia para nueva línea .
Este artículo describe cómo configurar vim para editar archivos de forma transparente con diferentes marcadores de fin de línea.
Si tiene un archivo
^M
al final de algunas líneas y desea deshacerse de ellas, use esto en Vim:(Presione Ctrl+ V Ctrl+ Mpara insertar eso
^M
).fuente
:%s/^M/\r/g
en lugar de quitar^M
y reemplazar^M
con el carácter de nueva línea\r
. Sin%
, el comando se aplica solo a la línea actual. Y me encontré con algunos ejemplos en los^M
que no está al final de la línea, comoThe first line.^MThe second line.
:%s/^M/
^M
se usa en UNIX\n
se usa en Unix, lo cual es correcto. Ese es el código ASCII10
, también conocido como^J
.La mayoría de los sistemas operativos UNIX tienen una utilidad llamada
dos2unix
que convertirá el CRLF a LF. Las otras respuestas cubren la pregunta "qué son".fuente
Una forma más sencilla de hacer esto es usar el siguiente comando:
Este comando también funciona con patrones de ruta, por ejemplo
Si no funciona, intente usar un modo diferente:
-c
Establecer el modo de conversión. Donde CONVMODE es uno de:ascii, 7bit, iso, mac
conascii
ser el predeterminado.fuente
Esto funciono para mi
El comando: e ++ ff = dos le dice a Vim que lea el archivo nuevamente, forzando el formato de archivo DOS. Vim eliminará las terminaciones de línea solo CRLF y LF, dejando solo el texto de cada línea en el búfer.
entonces
y finalmente
fuente
ff
refiere al formato de archivo? ¿Qué hay de++ff
?Otra forma de deshacerse de los retornos de carro es con el
tr
comando.Tengo un pequeño script que se ve así
fuente
Puedes limpiar esto con
sed
:El truco es cómo ingresar el retorno de carro correctamente. En general, debe escribir
C-v C-m
para ingresar un retorno de carro literal. También puede tener trabajo sed en el lugar confuente
¿Qué es esto ^ M?
^ M es un carácter de retorno de carro. Si ve esto, probablemente esté viendo un archivo que se originó en el mundo DOS / Windows, donde un final de línea está marcado por un par de retorno de carro / nueva línea, mientras que en el mundo Unix, fin de línea está marcado por una sola línea nueva.
¿Cómo pudo haber llegado allí?
Cuando hay un cambio en el formato del archivo.
¿Como me deshago de esto?
abre tu archivo con
guárdelo con el siguiente comando
fuente
En mi caso,
Nada de lo anterior funcionó, tuve un archivo CSV copiado a la máquina Linux desde mi Mac y usé todos los comandos anteriores, pero nada ayudó excepto el siguiente
Tenía un archivo en el que los caracteres ^ M estaban interceptados entre líneas, algo así como a continuación
fuente
Puede usar Vim en modo Ex:
-b
modo binario%
seleccione todas las líneass
sustituir\r
retorno de carrox
guardar y cerrarfuente
Agregue la siguiente línea a su ~ / .vimrc
Luego, cuando tenga un archivo con las terminaciones de línea de Windows, ejecute el comando ": Tounix".
fuente
En el pasado, he visto que incluso los archivos de configuración no se analizan correctamente y se quejan del espacio en blanco, pero si vi y hace una lista establecida, no mostrará el espacio en blanco, grep nombre de archivo [[espacio]] le mostrará ^ M
ahí es cuando
dos2unix file
ayudafuente