vim se muestra en cada línea que termina ^ M
¿Cómo hago para reemplazar esto con un salto de línea 'normal'?
vim
line-breaks
ByteNirvana
fuente
fuente

Respuestas:
Esto es lo único que funcionó para mí:
Lo encontré en: http://vim.wikia.com/wiki/File_format
fuente
:e ++ff=dosseguido por:set ff=unixconvertirá las terminaciones a un formato cuerdo.Mando
Donde
<Ctrl-V><Ctrl-M>significa tipo Ctrl+ Vluego Ctrl+ M.Explicación
sustituto,% = todas las líneas
^ M caracteres (Ctrl-V es una forma Vim de escribir el carácter Ctrl ^ y Ctrl-M escribe la M después de la expresión regular, dando como resultado el carácter especial ^ M)
con nueva línea (
\r)Y hágalo globalmente (no solo la primera aparición en la línea).
fuente
:%s/<Ctrl-V><Ctrl-M>/\r/g(donde \ r reemplaza la ^ M con una nueva línea).En Linux y Mac OS, los siguientes trabajos,
donde
^V^Msignifica tipo Ctrl+ V, luego Ctrl+ M.Nota: en Windows probablemente desee usar en
^Qlugar de^V, ya que de forma predeterminada^Vestá asignado para pegar texto.fuente
%s/\r/\r/gfuncionó bien en MacVim para un archivo que se muestra solo^Mal final de las líneas (una línea larga en términos de MacVim). Claramente, \ r significa cosas diferentes en el patrón frente a las partes de reemplazo de este comando.Dentro
vim, mira el formato de archivo: DOS o Unix::set filetype=unix:set fileformat=unixEl archivo se volverá a escribir sin caracteres de retorno de carro (CR, ^ M).
fuente
set ff=unixun pequeño atajo de la misma manera queftes un atajo parafiletypeUn archivo que había creado con BBEdit visto en MacVim mostraba un montón de
^Mretornos de línea en lugar de los regulares. El siguiente reemplazo de cadena resolvió el problema; espero que esto ayude:Es interesante porque estoy reemplazando los saltos de línea con el mismo carácter, pero supongo que Vim solo necesita obtener un nuevo \ r para mostrarse correctamente. Me interesaría saber la mecánica subyacente de por qué esto funciona.
fuente
\rpersonajes a\npesar de especificar\rcomo reemplazo. No me quejo, eso es exactamente lo que quería. Solo raro.Primero, use
:set ff?para averiguar el formato de archivo que tiene su archivo.Supongo que podría ser
unix, entonces el problema es que su archivo se creófileformat=dosagregando "^ M ^ J" al final de la línea, pero se leyó conflieformat=unixsolo quitar la "^ J" del final de la línea, dejando la "^ M" allí.Simplemente ingrese
:e ++ff=dosen la línea de comando de Vim para cambiar el formato de su archivo de unix a dos. Debería resolver el problema. Si no,:%s/\r//gdebería ayudarte.fuente
:e ++ff=dosentonces:set ff=unixy:wpara que el carácter ^ M coincida, tuve que seleccionarlo visualmente y luego usar el comando Copiar del SO al portapapeles para recuperarlo. Puede probarlo haciendo una búsqueda del personaje antes de probar el comando reemplazar.
debe seleccionar la primera línea incorrecta
reemplazará todos los ^ M errantes con retornos de carro.
Esto es como funciones en MacVim, que se basa en gvim 7.
EDITAR:
Tener este problema nuevamente en mi máquina con Windows 10, que tiene Ubuntu para Windows, y creo que esto está causando problemas de formato de archivo para vim. En este caso, cambiar el ff a unix, mac o dos no hizo más que cambiar ^ M a ^ J y viceversa.
La solución en este caso:
La razón por la que tomé esta ruta es porque quería asegurarme de que no estaba siendo destructivo con mi archivo. Podría haberlo hecho,
:%s/\r$//gpero eso habría eliminado los retornos de carro de inmediato, y podría haber tenido resultados inesperados. En su lugar, convertimos el carácter CR singular, aquí un carácter ^ M, en un espacio, y luego eliminamos todos los espacios al final de las líneas (lo que para mí es un resultado deseable independientemente)Perdón por revivir una vieja pregunta que ha sido respondida desde hace mucho tiempo, pero parecía haber cierta confusión y pensé que podría ayudar a aclarar algo de eso, ya que esto está en lo más alto de las búsquedas de Google.
fuente
Ninguno de estos funcionó para mí, así que probé esto, que funcionó:
tipo
:%s/prensa CTRL-VCTRL-M
tipo
//gprensa Enter
Entonces el comando general en Vim debería verse como
:%s/^M//gLo que esto hace:
:%s(buscar y reemplazar)/^M/(ese símbolo)/(sin caracteres)g(globalmente).fuente
^ M es recuperado por Ctrl+ Vy M, también
fuente
Sin necesidad de usar Ctrl:
:%s/\r$//fuente
Algo simple que funcionó para mí
fuente
Hice esto con sed:
sed -i -e 's/\r/\n/g' filenamefuente
sed -e 's/\r/\n/g' <<< 'over and over'->oven and ovensedpero no para BSDsedentonces (como se encuentra en OSX). Cualquiera que arregle saltos de línea probablemente esté trabajando con una combinación de sistemas operativos, por lo que es útil tener claro cuándo funcionará la respuesta.¿Qué pasa con
:%s/\r//geso ? Eso funcionó totalmente para mí.Lo que esto hace es simplemente limpiar el final de la línea de todas las líneas, elimina el ^ M y listo.
fuente
Hay muchas otras respuestas a esta pregunta, pero aún así, las siguientes funcionan mejor para mí, ya que necesitaba una solución de línea de comandos:
Explicación:
myfile:e ++ff=dospara forzar una recarga de todo el archivo como terminaciones de dos líneas.:w ++ff=unixpara escribir el archivo usando terminaciones de línea unixfuente
Ctrl+ Mminimiza mi ventana, pero Ctrl+ Enterrealmente inserta un
^Mcarácter. También tenía que asegurarme de no levantar la Ctrltecla entre pulsaciones.Entonces la solución para mí fue:
Donde
<Ctrl-V><Ctrl-Enter>significa mantener Ctrl presionado, presionar y soltar V, presionar y soltar Enter, y luego soltar Ctrl .Si está trabajando en un archivo generado por Windows
La solución anterior agregará una línea adicional entre las líneas existentes, porque ya hay un invisible
\rdespués de^M.Para evitar esto, desea eliminar los
^Mcaracteres sin reemplazarlos.Donde
%significa "en este búfer",ssignifica "sustituto",/significa "(buscar) el siguiente patrón", se<Ctrl-V><Ctrl-Enter>refiere a las teclas para presionar para obtener el^Mcarácter (ver arriba),//significa "sin nada" (o "con el patrón entre estas dos barras, que está vacío "), yges una bandera que significa" globalmente ", en oposición a la primera aparición en una línea.fuente
Esto funcionó para mí:
\nfinal de línea)Entonces en vim:
fuente
En mi caso,
Nada de lo anterior funcionó, tuve un archivo CSV copiado a la máquina Linux desde mi mac y utilicé todos los comandos anteriores, pero nada ayudó excepto el siguiente
Tenía un archivo en el que los caracteres ^ M estaban intercalados entre líneas, algo así como a continuación
fuente
Alternativamente, hay utilidades de código abierto llamadas dos2unix y unix2dos disponibles que hacen esto mismo. En un sistema Linux probablemente estén instalados por defecto; para un sistema Windows, puede descargarlos desde http://www.bastet.com/ entre otros.
fuente
donde ^ M se escribe presionando simultáneamente las 3 teclas, ctrl + v + m
fuente
use la utilidad dos2unix si el archivo se creó en Windows, use la utilidad mac2unix si el archivo se creó en mac. :)
fuente
Use uno de estos comandos:
O
fuente
Esto funcionó para mí:
fuente
Para guardar las pulsaciones de teclas , puede evitar escribir Ctrl+ VCtrl+ Mcolocando esto en una asignación. Simplemente abra un archivo que contenga un carácter ^ M, tírelo y péguelo en una línea como esta en su .vimrc:
fuente
Ninguna de estas sugerencias funcionó para mí, ya que logré obtener una gran cantidad de
^Msaltos de línea mientras trabajaba con vim y eclipse. Sospecho que encontré un caso externo, pero en caso de que ayude a alguien que lo hice.Y resolvió mi problema
fuente
Si escribe
^MusandoShift+6 Caps+Mno lo aceptará.Tiene que escribir
ctrl+v ctrl+m.fuente
^Mda saltos de línea no deseados. Para manejar esto, podemos usar elsedcomando de la siguiente manera:fuente
Simplemente elimine
set binaryen su .vimrc!fuente
Para usar
seden MacOS, haga esto:Explicación: La
$'STRING'sintaxis aquí pertenece al shell bash. Las Mac no se tratan\rcomo caracteres especiales. Al citar la cadena de comando en,$''le está diciendo al shell que reemplace\rcon el\rcarácter real especificado en el estándar ANSI-C.fuente
"Esta función conserva la lista de saltos
fuente
Pasé una tarde luchando con \ n ctrl-v 012 (los cuales me proporcionan nulo). y trabajé a través de este hilo hasta que llegué al metagrafo.
\rfuncionó bien para mí!convertido algo como esto:
en algo como esto:
Magia. Estoy profundamente agradecido
fuente