2012-07-29 7 views
10

Copio las celdas pegadas de una hoja de cálculo de Google larga en un archivo txt que es una lista de direcciones de correo electrónico separadas por comas. También hay muchas celdas "en blanco", es decir, un espacio en blanco rodeado de comas. Así que podría tener la siguiente lista:En vim buscar y reemplazar, newline se representa como "^ @"

[email protected], ,[email protected], , , , [email protected]

En vim, cuando intento agregar por separado cada dirección por una nueva línea con este comando:

:%s/, /,\n/g 

en lugar de añadir una nueva línea después el comandante, obtengo "^ @" en su lugar.

Sé que esto tiene algo que ver con los conjuntos de caracteres, pero no sé cómo solucionarlo.

Respuesta

13

En el campo de reemplazo :s, necesita usar \r no \n para caracteres de nueva línea.

^@ es el carácter nulo de ASCII. Vim internamente usa \ r para líneas nuevas (que es^M), y \ n para ASCII nulo, por lo tanto, en el reemplazo, si usa \ n obtendrá esos caracteres nulos en lugar de líneas nuevas. Consulte también: h sub-replace-special

+0

¿Puede explicar por qué su '\ n' aparece como'^@ '? –

+4

'^ @' es el carácter nulo ASCII. Vim internamente utiliza '\ r' para nuevas líneas (que es'^M'), y '\ n' para ASCII nulo, entonces en la sustitución, si usa' \ n' obtendrá esos caracteres nulos en lugar de líneas nuevas. Ver también ': h sub-replace-special'. – Julian

+0

@Julian: Creo que deberías poner esa explicación en la respuesta. –