¿Cómo puedo encontrar/reemplazar todos los caracteres CR/LF en Notepad++?
Estoy buscando algo equivalente al carácter especial ^p en Microsoft Word.
**También debería funcionar.
Actualización 26 de marzo de 2012, fecha de lanzamiento de Notepad++ 6.0:
OMG, ¡¡¡ahora sí funciona!!!
Respuesta original 2008 (Notepad++ 4.x) - 2009-2010-2011 (Notepad++ 5.x)
En realidad no, no parece funcionar con regexp...
Pero si tiene Notepad++ 5.x, puede utilizar el modo de búsqueda 'extendida' y buscar \r\n
. Eso sí encuentra todos tus CRLF
.
(Me doy cuenta de que esta es la misma respuesta que las otras, pero de nuevo, 'el modo extendido' sólo está disponible con Notepad++ 4.9, 5.x y más)
Desde abril de 2009, tiene un artículo wiki en el sitio de Notepad++ sobre este tema:
"Cómo reemplazar los extremos de línea, cambiando así el diseño de la línea".
(mencionado por georgiecasey en su respuesta abajo)
Algunos extractos relevantes incluyen los siguientes procesos de búsqueda:
Búsqueda simple (Ctrl+F), Modo de búsqueda = `Normal
Puede seleccionar un
EOL
en la ventana de edición.
- Simplemente mueva el cursor al final de la línea, y escriba Shift+Right Flecha.
- o, para seleccionar
EOL
con el ratón, comience justo al final de la línea y arrastre hasta el comienzo de la siguiente; arrastrar a la derecha delEOL
no funcionará. Puede copiar manualmente elEOL
y pegarlo en el campo para archivos Unix (LF
solamente).
Búsqueda simple (Ctrl+F), Modo de búsqueda = Extendido
La opción "Extendida" muestra
\n
y\r
como caracteres que podrían coincidir.
Al igual que en el modo de búsqueda normal, Notepad++ busca el carácter exacto.
La búsqueda de\r
en un archivo con formato UNIX no encontrará nada, pero la búsqueda de\n
sí. Del mismo modo, un archivo con formato Macintosh contendrá\r
pero no\n
.
Búsqueda simple (Ctrl+F), modo de búsqueda = expresión regular
Las expresiones regulares utilizan los caracteres ^
y $
para anclar la cadena de búsqueda al principio o al final de la línea. Por ejemplo, la búsqueda de return;$
encontrará las apariciones de "return;" que no se produzcan con ningún texto posterior en esa misma línea. Los caracteres de anclaje funcionan de forma idéntica en todos los formatos de archivo.
El metacarácter de punto '.' no coincide con los finales de línea.
[Probado en Notepad++ 5.8.5]: una búsqueda de expresión regular con un
\r
o\n
explícito no funciona (en contra de la documentación de Scintilla).
Tampoco funciona una búsqueda sobre un LF explícito (pegado), o sobre los caracteres EOL (invisibles) colocados en el campo cuando se selecciona un EOL. Búsqueda avanzada (Ctrl+R) sin regexp
Ctrl+M insertará algo que coincida con las nuevas líneas. Serán reemplazadas por la cadena de reemplazo.
Recomiendo este método como el más confiable, a menos que realmente necesite usar regex.
Como ejemplo, para eliminar una de cada dos nuevas líneas en un archivo con doble espacio, introduzca Ctrl+M dos veces en el cuadro de cadena de búsqueda, y una vez en el cuadro de cadena de sustitución.
Búsqueda avanzada (Ctrl+R) con Regexp.
No coinciden ni Ctrl+M,
$
ni\r\n
.
La misma wiki también menciona la alternativa del editor hexadecimal:
Escribir la nueva cadena al principio del documento.
Nota: el carácter seleccionado para la nueva línea suele aparecer como 0a
.
Puede tener un valor diferente si el archivo está en formato Windows. En ese caso siempre puede ir a Edición -> Conversión EOL -> Convertir a Formato Unix
, y después del reemplazo volver a cambiar y Edición -> Conversión EOL -> Convertir a Formato Windows
.
En el cuadro de diálogo Reemplazar, usted quiere establecer el modo de búsqueda a "Extendido". Los modos Normal o Expresión Regular no funcionan.
A continuación, sólo tiene que encontrar "\ ~ ~ " (o simplemente \ ~ para los archivos de Unix o simplemente \ ~ para los archivos de formato de Mac), y establecer el reemplazo a lo que usted desea.
Asumiendo que tiene una búsqueda de "expresiones regulares", busque \r\n. Yo prefiero "r", porque algunos archivos no utilizan retornos de carro.
EDIT: Gracias por los comentarios, a quien haya votado esto. Me he enterado de que... bueno, nada, porque no habéis aportado ningún comentario. ¿Por qué está mal?