¿Cuáles son estas ^ M's que siguen apareciendo en mis files en emacs?

Así que creo que puede tener que ver con el compañero de text, pero trabajamos en un pequeño equipo y tenemos algunos problemas con los files completos de files casi idénticos en git porque cada línea de una twig tiene una ^ M añadida.

¿Qué se supone que debe hacer este misterioso personaje, y de dónde podría venir?

Nuestros desarrolladores usan emacs en Windows / Mac, TextMate en Mac, coda en Mac y ocasionalmente el editor de text wp-admin.

¿Alguien alguna vez tiene este problema derivado de uno de esos?

Alguien no está convirtiendo correctamente sus caracteres de final de línea .

Supongo que es la gente de Windows, ya que aman su CRLF. Unix ama LF y Mac amaba CR hasta que se mostró el path de Unix.

En git-config , establezca core.autocrlf en true para hacer que git convierta automáticamente las terminaciones de línea para su plataforma.

^M es 0x0d , es decir, el carácter de retorno de carro. Si su pantalla se ve como

 línea 1 ^ M
 línea 2 ^ M

entonces el file debe provenir de Windows porque la secuencia de nueva línea estándar en Windows es CR LF ( 0x0d 0x0a ) mientras que la secuencia de nueva línea estándar consiste únicamente en LF en Unices.

Si el file proviene de un sistema Mac OS 9 o anterior, lo verías como

 línea 1 ^ Mline 2 ^ M

porque no habría líneas de alimentación después de los retornos de carro.

Tienen que ver con la diferencia entre las terminaciones de línea estilo DOS y el estilo Unix. Mira el artículo de Wikipedia . Es posible que pueda encontrar una herramienta dos2unix para ayudar, o simplemente escriba un pequeño script para solucionarlo usted mismo.

Editar : Encontré el siguiente código de ejemplo de Python aquí :

 string.replace( str, '\r', '' ) 

en lugar de replace consultas también puede usar Mx delete-trailing-whitespace

Pot lo siguiente en tu ~/.emacs (o eqiuvalent)

 (defun dos2unix () "Replace DOS eolns CR LF with Unix eolns CR" (interactive) (goto-char (point-min)) (while (search-forward "\r" nil t) (replace-match ""))) 

y luego podrías simplemente usar Mx dos2unix .

^M al final de la línea en Emacs indica un retorno de carro seguido de (\ r) por un avance de línea (\ n). A menudo verá esto si una persona edita files en Windows (donde el final de la línea es la combinación de retorno de carro y caracteres de nueva línea) y edita en Unix o Linux (donde el final de la línea es solo un carácter de nueva línea).

La combinación de caracteres generalmente no es dañina. Si está utilizando el control de fuente, puede configurar el file de text en el formatting para que las líneas se ajusten mágicamente para usted. Alternativamente, es posible que pueda utilizar desencadenantes de input y salida que automáticamente "arreglen" los files por usted. O bien, puede utilizar una herramienta como dos2unix para ajustar manualmente las cosas.

Como todos han mencionado. Es un estilo de terminación de línea diferente. MacOSX utiliza terminaciones de línea Unix, es decir, LF (alimentación de línea).

Windows usa CR (retorno de carro) y LF (avance de línea) como final de línea. Como usas tanto Windows como Mac, de ahí viene el problema.

Si crea un file en Windows y luego lo trae al mac, puede ver estos ^ M caracteres al final de las líneas.

Si desea eliminarlos, puede hacerlo fácilmente en emacs. Simplemente resalta y copy el carácter ^ M y haz una consulta-reemplaza ^ M con y listo.

EDITAR: Algunos otros enlaces que pueden ser de ayuda. http://xahlee.org/emacs/emacs_adv_tips.html

Esta le ayuda a configurar emacs para usar un tipo particular de estilo de final de línea. http://www.emacswiki.org/emacs/EndOfLineTips

Me encontré con este problema hace un time. El ^ M representa un retorno de carro, y la búsqueda en Ctrl-Q Ctrl-M (Esto crea un literal ^ M) le permitirá get un control sobre este personaje dentro de Emacs. Hice algo en esta línea:

 Mx replace-string [ENTER] Cq Cm [ENTER] \n [ENTER] 

Ver también:

Esconder ^ M en emacs

Tenga cuidado si elige eliminar los ^ ^ caracteres y volver a enviarlos a su equipo. Es posible que vean un file sin retornos de carro después.