Convertir DOS de los finales de línea para Linux finales de línea en vim
Pregunta
Si puedo abrir los archivos que he creado en Windows, las líneas de todos los finales con ^M
.
¿Cómo puedo eliminar estos personajes a la vez?
Solución
dos2unix es una utilidad de línea de comandos que va a hacer esto, o :%s/^M//g
si lo uso Ctrl-v Ctrl-m a la entrada de la ^M, o puede :set ff=unix
y vim va a hacer por usted.
Docs en el "formato de archivo" configuración son aquí, y el vim wiki tiene un amplio página en línea de final de conversiones.
Alternativamente, si mueve los archivos de ida y vuelta mucho, puede que no desee convertir, sino para hacer :set ff=dos
, por lo que vim sabrá que es un DOS archivos y el uso de DOS convenios para finales de línea.
Otros consejos
Cambiar los finales de línea en la vista:
:e ++ff=dos
:e ++ff=mac
:e ++ff=unix
Esto también puede ser utilizado como el ahorro de operación (:w solo no va a ahorrar con los finales de línea que se ve en pantalla):
:w ++ff=dos
:w ++ff=mac
:w ++ff=unix
Y se puede utilizar desde la línea de comandos:
for file in *.cpp
do
vi +':w ++ff=unix' +':q' "$file"
done
Yo normalmente uso
:%s/\r/\r/g
lo que me parece un poco raro, pero funciona porque de la manera que vim coincide con saltos de línea.También me resulta más fácil de recordar :)
Yo prefiero usar el siguiente comando :
:set fileformat=unix
También puede utilizar mac
o dos
para convertir el archivo de macintosh o de MS-DOS y MS-Windows archivo de la convención.Y no hace nada si el archivo ya está en el formato correcto.
Para obtener más información, consulte la ayuda de vim :
:help fileformat
:%s/\r+//g
En Vim, que elimina todos los retornos de carro, y deja sólo el carácter de nueva línea.
:set fileformat=unix
para convertir de dos a unix.
de: http://vim.wikia.com/wiki/Change_end-of-line_format_for_dos-mac-unix
[Esc] :%s/ $//
dos2unix
puede modificar directamente el contenido del archivo.
Usted puede utilizar directamente en el archivo, sin necesidad de que el archivo temporal de la redirección.
dos2unix input.txt input.txt
El anterior utiliza el supuesto que NOS teclado.El uso de la -
437 opción para utilizar el reino unido teclado.
dos2unix -437 input.txt input.txt
Convertir el directorio de archivos de dos a Unix
Utilizando la línea de comandos y sed, encontrar todos los archivos en el directorio actual con la extensión ".ext" y eliminar todos "^M"
@ https://gist.github.com/sparkida/7773170
find $(pwd) -type f -name "*.ext" | while read file; do sed -e 's/^M//g' -i "$file"; done;
también, como se mencionó anteriormente ^M = Ctrl+V + Ctrl+M (no sólo tiene que escribir el símbolo de intercalación símbolo "^" y M)
tr -d '\15\32' < winfile.txt > unixfile.txt
Pasos siguientes puede convertir el formato de archivo de dos a unix:
:e ++ff=dos Edit file again, using dos file format ('fileformats' is ignored).[A 1]
:setlocal ff=unix This buffer will use LF-only line endings when written.[A 2]
:w Write buffer using unix (LF-only) line endings.
Referencia: http://vim.wikia.com/wiki/Change_end-of-line_format_for_dos-mac-unix
Con el siguiente comando:
:%s/^M$//g
Obtener la ^M
a aparecer el tipo de CtrlV entonces CtrlM. CtrlV dice Vim para tomar el siguiente carácter introducido, literalmente.
He encontrado una manera muy fácil:Abra el archivo con nano: nano file.txt
Pulse CTRL+O para guardar, pero antes de pulsar Entrar, pulse: ALT+D para alternar entre DOS y Unix/Linux línea de terminaciones, o: ALT+M para alternar entre Mac y Unix/Linux línea de terminaciones, a continuación, presione Entrar para guardar y CTRL+X para dejar de fumar.
:g/Ctrl-v Ctrl-m/s///
CtrlM es el personaje \r
, o retorno de carro, que DOS de los finales de línea agregar. CtrlV dice vim para insertar un literal CtrlM carácter en la línea de comandos.
Tomado como un todo, este comando reemplaza todos \r
con nada, la eliminación de ellos de los extremos de las líneas.
Usted puede utilizar:
vim somefile.txt +"%s/\r/\r/g" +wq
o dos2unix utility
.
El comentario acerca de la introducción de la ^M a aparecer es lo que ha funcionado para mí.Simplemente escribiendo "^M" en mi vi no tiene nada que hacer (no se encuentra).El CTRL+V CTRL+M secuencia lo hizo a la perfección, aunque.
Mi trabajo de sustitución de comando fue
:%s/Ctrl-V Ctrl-M/\r/g
y parecía que esta en mi pantalla:
:%s/^M/\r/g
Puede utilizar el siguiente comando:
:%s/^V^M//g
donde el '^' uso de los medios CTRL clave.
a continuación se utiliza el comando para formatear todo .sh archivo en el directorio actual, lo he comprobado en mi Fedora OS.
for file in *.sh; do awk '{ sub("\r$", ""); print }' $file >luxubutmp; cp -f luxubutmp $file; rm -f luxubutmp ;done
Por lo general hay una dos2unix
el comando se puede utilizar para esto, sólo asegúrese de que usted lea el manual de GNU y BSD versiones difieren sobre cómo hacer frente a los argumentos.
Versiones de BSD:
dos2unix $FILENAME $FILENAME_OUT
mv $FILENAME_OUT $FILENAME
Versión de GNU:
dos2unix $FILENAME
Alternativamente, usted puede crear su propio dos2unix
con ninguna de las respuestas aquí, por ejemplo:
function dos2unix(){
[ "${!}" ] && [ -f "{$1}" ] || return 1;
{ echo ':set ff=unix';
echo ':wq';
} | vim "${1}";
}
Yo sabía que me había visto en algún lugar.Aquí está el FreeBSD inicio de sesión de consejo:
Necesidad de retirar todos aquellos ^M caracteres de un DOS archivo?Trate de
tr -d \\r < dosfile > newfile
-- Originally by Dru <genesis@istar.ca>
En vim, escriba:
:w !dos2unix %
Esto va a canalizar el contenido de la actual buffer a la dos2unix de comandos y escribir los resultados sobre el contenido actual.Vim le pregunte para volver a cargar el archivo después de la
Para ejecutar directamente en la consola de linux:vim file.txt +"set ff=unix" +wq
Aunque este tema es muy viejo, me gustaría poner otra cosas de wikia:
%s/\r\+$//g
que llenan encontrar todos retorno de carro signos (de una o más repeticiones) hasta el final de la línea y eliminar, por lo que sólo \n
va a permanecer en eol.
Esta es mi manera.Abrí un archivo en dos EOL y al guardar el archivo que se convertirá automáticamente en unix EOL
autocmd BufWrite * :set ff=unix
si crea un archivo en el Bloc de notas o NotePad ++ en windows y llevarlo a Linux y open por vim, verá ^M al final de cada línea.Para eliminar esto,
En su terminal de Linux, tipo de
dos2unix nombre de archivo.ext
Esto va a hacer el necesario arte de magia.
Yo quería saltos de línea en lugar de la ^M.Perl para el rescate:
perl -pi.bak -e 's/\x0d/\n/g' excel_created.txt
O escribir a stdout:
perl -p -e 's/\x0d/\n/g' < excel_created.txt