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=dos
seguido por:set ff=unix
convertirá 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^M
significa tipo Ctrl+ V, luego Ctrl+ M.Nota: en Windows probablemente desee usar en
^Q
lugar de^V
, ya que de forma predeterminada^V
está asignado para pegar texto.fuente
%s/\r/\r/g
funcionó bien en MacVim para un archivo que se muestra solo^M
al 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=unix
El archivo se volverá a escribir sin caracteres de retorno de carro (CR, ^ M).
fuente
set ff=unix
un pequeño atajo de la misma manera queft
es un atajo parafiletype
Un archivo que había creado con BBEdit visto en MacVim mostraba un montón de
^M
retornos 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
\r
personajes a\n
pesar de especificar\r
como 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=dos
agregando "^ M ^ J" al final de la línea, pero se leyó conflieformat=unix
solo quitar la "^ J" del final de la línea, dejando la "^ M" allí.Simplemente ingrese
:e ++ff=dos
en 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//g
debería ayudarte.fuente
:e ++ff=dos
entonces:set ff=unix
y:w
para 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$//g
pero 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
//g
prensa Enter
Entonces el comando general en Vim debería verse como
:%s/^M//g
Lo 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' filename
fuente
sed -e 's/\r/\n/g' <<< 'over and over'
->oven and oven
sed
pero no para BSDsed
entonces (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//g
eso ? 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=dos
para forzar una recarga de todo el archivo como terminaciones de dos líneas.:w ++ff=unix
para escribir el archivo usando terminaciones de línea unixfuente
Ctrl+ Mminimiza mi ventana, pero Ctrl+ Enterrealmente inserta un
^M
cará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
\r
después de^M
.Para evitar esto, desea eliminar los
^M
caracteres sin reemplazarlos.Donde
%
significa "en este búfer",s
significa "sustituto",/
significa "(buscar) el siguiente patrón", se<Ctrl-V><Ctrl-Enter>
refiere a las teclas para presionar para obtener el^M
carácter (ver arriba),//
significa "sin nada" (o "con el patrón entre estas dos barras, que está vacío "), yg
es una bandera que significa" globalmente ", en oposición a la primera aparición en una línea.fuente
Esto funcionó para mí:
\n
final 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
^M
saltos 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
^M
usandoShift+6 Caps+M
no lo aceptará.Tiene que escribir
ctrl+v ctrl+m
.fuente
^M
da saltos de línea no deseados. Para manejar esto, podemos usar elsed
comando de la siguiente manera:fuente
Simplemente elimine
set binary
en su .vimrc!fuente
Para usar
sed
en MacOS, haga esto:Explicación: La
$'STRING'
sintaxis aquí pertenece al shell bash. Las Mac no se tratan\r
como caracteres especiales. Al citar la cadena de comando en,$''
le está diciendo al shell que reemplace\r
con el\r
cará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.
\r
funcionó bien para mí!convertido algo como esto:
en algo como esto:
Magia. Estoy profundamente agradecido
fuente