Come posso trovare/sostituire tutti i caratteri CR/LF in Notepad++?
Sto cercando qualcosa di equivalente al carattere speciale ^p in Microsoft Word.
[\r\n]+` dovrebbe funzionare anche
Aggiornamento 26 marzo 2012, data di rilascio di Notepad++ 6.0:
OMG, ora funziona davvero!!!
Risposta originale 2008 (Notepad++ 4.x) - 2009-2010-2011 (Notepad++ 5.x)
In realtà no, non sembra funzionare con regexp...
Ma se hai Notepad++ 5.x, puoi usare la modalità di ricerca 'extended' e cercare \r\n
. Questo trova tutti i tuoi CRLF
.
(Mi rendo conto che questa è la stessa risposta degli altri, ma di nuovo, 'modalità estesa' è disponibile solo con Notepad++ 4.9, 5.x e più)
Da aprile 2009, avete un articolo wiki sul sito di Notepad++ su questo argomento:
"How To Replace Line Ends, thus changing the line layout".
(menzionato da georgiecasey nella sua risposta sotto)
Alcuni estratti rilevanti includono i seguenti processi di ricerca:
Normal
.Puoi selezionare un EOL
nella finestra di modifica.
Basta spostare il cursore alla fine della riga, e digitare Shift+Right Freccia.
EOL
con il mouse, iniziate proprio alla fine della linea e trascinate all'inizio della linea successiva; trascinare a destra dell' EOL
non funzionerà.
Puoi copiare manualmente il EOL
e incollarlo nel campo per i file Unix (solo LF
).L'opzione "Extended" mostra
\n
e\r
come caratteri che potrebbero essere abbinati.
Come per il modo di ricerca normale, Notepad++ cerca il carattere esatto.
La ricerca di\r
in un file in formato UNIX non troverà nulla, ma la ricerca di\n
sì. Allo stesso modo, un file in formato Macintosh conterrà\r
ma non\n
.
Le espressioni regolari usano i caratteri ^
e $
per ancorare la stringa di corrispondenza all'inizio o alla fine della linea. Per esempio, la ricerca di return;$
troverà le occorrenze di "return;" che si verificano con nessun testo successivo sulla stessa linea. I caratteri di ancoraggio funzionano in modo identico in tutti i formati di file.
Il metacarattere '.' punto non corrisponde ai fine riga.
[Testato in Notepad++ 5.8.5]: una ricerca con espressione regolare con un esplicito \r
o \n
non funziona (contrariamente alla documentazione di Scintilla).
Nemmeno una ricerca su un LF esplicito (incollato), o sui caratteri EOL (invisibili) inseriti nel campo quando viene selezionato un EOL.
Ricerca avanzata (Ctrl+R) senza regexp
CtrlCtrl+M inserirà qualcosa che corrisponde alle newline. Saranno sostituite dalla stringa di sostituzione.
Raccomando questo metodo come il più affidabile, a meno che non abbiate davvero bisogno di usare la regex.
Come esempio, per rimuovere ogni seconda newline in un file a doppio spazio, inserisci Ctrl+M due volte nella casella della stringa di ricerca, e una volta nella casella della stringa di sostituzione.
Né Ctrl+M,
$
né\r\n
sono abbinati.
Lo stesso wiki menziona anche l'alternativa Hex editor:
Digitare la nuova stringa all'inizio del documento.
Nota: il carattere selezionato per la nuova linea di solito appare come 0a
.
Può avere un valore diverso se il file è in formato Windows. In tal caso puoi sempre andare su Modifica -> Conversione EOL -> Converti in formato Unix
, e dopo la sostituzione cambialo di nuovo e Modifica -> Conversione EOL -> Converti in formato Windows
.
Nella finestra di dialogo Replace, vuoi impostare la modalità di ricerca su "Extended". Le modalità Normale o Espressione regolare non funzionano.
Poi basta trovare "\r\n" (o solo \n per i file unix o solo \r per i file in formato mac), e impostare la sostituzione a quello che vuoi.
Supponendo che abbia un "espressioni regolari" di ricerca, cercate \r\n. Preferisco \r?\n, perché alcuni file non usano i ritorni a capo.
EDIT: Grazie per il feedback, chiunque abbia votato questo. Ho imparato che... beh, niente, perché non hai fornito alcun feedback. Perché è sbagliato?