Conversione EOL in notepad ++


113

Per qualche ragione, quando apro file da un server unix sulla mia macchina Windows, occasionalmente hanno una conversione EOL Macintosh e quando li modifico / salvo di nuovo non funzionano correttamente sul server unix. Uso solo notepad ++ per modificare i file da questo server unix, quindi c'è un modo per creare una macro che converte automaticamente EOL in formato Unix ogni volta che apro un file?



1
Il tuo problema potrebbe essere con qualsiasi programma FTP che stai utilizzando. Ad esempio, utilizzo WinSCP per eseguire il controllo remoto in un server Unix, Notepad ++ è impostato come editor predefinito, ma ho dovuto accedere alle impostazioni di WinSCP e impostare la modalità di trasferimento Binaryper mantenere preservate le terminazioni di riga. Quindi, potresti essere in grado di riconfigurare il tuo programma FTP / SCP / ecc per trasferire i file in un modo diverso.
Slicktrick

Risposte:


200

Questa funzionalità è già incorporata in Notepad ++. Dal menu "Modifica", seleziona "Conversione EOL" -> "Formato UNIX / OSX".

screenshot dell'opzione per una ricerca ancora più rapida (o versioni in lingue diverse)

È anche possibile impostare l'EOL predefinito in Notepad ++ tramite "Impostazioni" -> "Preferenze" -> "Nuovo documento / Directory predefinita" quindi selezionare "Unix / OSX" nella casella Formato.


7
Conosco la conversione nel menu di modifica e le impostazioni che hai menzionato sono solo per i nuovi documenti. Voglio fare automaticamente la conversione per ogni file che apro (o ogni file che salvo)
Jeff

Il problema è che quando apro un file Unix esistente, "Conversione EOL" -> Formato UNIX / OSX è disattivato. Notepad ++ è frustrante da usare con i file UNIX, quindi uso Notetab Lite che mi permette di salvare tutti i file come UNIX, non solo quelli nuovi.
Off The Gold

3
@OffTheGold L'opzione UNIX EOL è disattivata perché è la selezione corrente.
blakeoft

Bene. Grazie da novembre 2017 tramite Google.
SDsolar

Questo non funziona per me. Continuo a selezionare "EOL Conversion -> Unix", ma non fa nulla. Torno nel menu e vedo che Windows è l'opzione disattivata (quindi selezionata?), Quindi faccio di nuovo clic su Unix. Ho anche provato a selezionare tutto il mio testo prima nel caso in cui funzioni solo sulla selezione, quindi ho selezionato nuovamente Unix. Eppure non fa niente.
Loduwijk

16

In Notepad ++, usa sostituisci tutto con un'espressione regolare. Questo ha il vantaggio rispetto al comando di conversione nel menu che puoi operare su tutta la cartella senza dover aprire ogni file o trascinare e rilasciare (su diverse centinaia di file diventerà notevolmente più lento), inoltre puoi anche impostare il filtro jolly per il nome del file.

(\r?\n)|(\r\n?)

per

\n

Questo farà corrispondere ogni possibile pattern di fine riga (singolo \ r, \ n o \ r \ n) a \ n. (Oppure \ r \ n se stai convertendo in stile Windows)

Per operare su più file:

  • Utilizzare "Sostituisci tutto in tutti i documenti aperti" nella scheda "Sostituisci". Dovrai prima trascinare e rilasciare tutti i file in Notepad ++. È positivo che tu abbia il controllo su quale file operare, ma può essere lento se ci sono diverse centinaia o migliaia di file.
  • "Sostituisci nei file" nella scheda "Trova nei file", in base al filtro file di tua scelta, ad esempio * .cpp * .cs in una directory specificata.

Ciò può causare la perdita di EOL a causa della sostituzione di un \ r \ n \ r \ n con un singolo \ n. Penso.
Sunspawn

Conferma funzionato in Notepad ++ 6.9.1. Cercherà in avanti, quindi non sostituirà ricorsivamente quelli che sono dietro.
Wappenull

In risposta a: "Ciò può causare la perdita di EOL a causa della sostituzione di un \ r \ n \ r \ n con un singolo \ n" >> Non lo farà, poiché utilizza | (o) operatore tra 2 possibili gruppi.
Wappenull

3

Apro i file "direttamente" da WinSCP che apre i file in Notepad ++ Avevo un file php sul mio server linux che si apriva sempre in formato Mac qualunque cosa facessi :-(

Se ho scaricato il file e poi l'ho aperto da locale (Windows) era aperto come Dos / Windows .... hmmm

La soluzione era convertire EOL il file locale in "Formato UNIX / OSX", salvarlo e quindi caricarlo.

Ora quando apro il file direttamente dal server è aperto come "Dos / Windows" :-)


1

A seconda del progetto, potresti prendere in considerazione l'utilizzo di EditorConfig ( https://editorconfig.org/ ). C'è un plugin per Notepad ++ che caricherà un .editorconfig dove puoi specificare "lf" come fine riga obbligatoria.

Ho appena iniziato a usarlo, ma finora è bello ei progetti open source su cui ho lavorato hanno incluso file .editorconfig per anni. L'impostazione "Conversione EOL" non è cambiata, quindi può creare un po 'di confusione, ma se "Visualizza> Mostra simbolo> Mostra fine riga", puoi vedere che sta aggiungendo LF invece di CRLF, anche quando "Conversione EOL "e l'angolo inferiore inferiore mostra qualcos'altro (ad esempio Windows (CR LF)).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.