2012-02-15 10 views

risposta

7

provare a fare

Edit > Advanced > Format Document 

Poi salvare il documento, a patto che il file non venga modificato da un altro editor esterno, dovrebbe rimanere coerenti. Lo aggiusta per me.

+6

Questo non ha risolto il problema per me. Ha cambiato molti spazi bianchi nel file corrente (oltre le terminazioni di riga) e non ha influito su nessun altro file nella soluzione. – hypehuman

+0

Inoltre non ha risolto per me, (vsc 7.3.2) applica solo la formattazione di origine, (ma non il criterio di fine riga) –

10

È possibile utilizzare il comando Sostituisci in file e attivare le espressioni regolari. Ad esempio, per sostituire end-of-lines che hanno un singolo linefeed "\ n" (ad esempio, da GitHub, ad esempio) con l'avanzamento standard di ritorno a capo di Windows "\ r \ n", cercare:

([^\r]|^)\n 

che indica di creare un gruppo (che è il motivo per cui sono necessarie le parentesi), dove il primo carattere è o non è un ritorno a capo o è l'inizio di una riga. L'inizio del test di linea è in realtà solo all'inizio del file, se capita di iniziare con un "\ n". Seguendo il gruppo è una nuova riga. Quindi, corrisponderai a "; \ n" che ha la fine della riga sbagliata, ma non "\ r \ n" che è la fine della riga corretta.

e sostituirlo con:

$1\r\n 

che indica di mantenere il gruppo ($ 1) e quindi sostituire il "\ n" con "\ r \ n".

+6

Sostituire '\ r? \ N' con' \ r \ n' pulirà tutta la riga finali senza coinvolgere l'uso di gruppi di cattura. – kbolino

2

Aggiornamento: Si prega di fare attenzione. Non eseguire questa operazione a meno che non sia già stato eseguito il commit completo del repository del codice e sia possibile annullare eventuali modifiche non intenzionali. Leggi i commenti qui sotto. Le cose che hanno funzionato per me potrebbero non funzionare per te.


di risposta Ron era davvero vicino a me aiutare, ma ho dovuto fare alcune modifiche per farlo funzionare in Visual Studio.

1) aprire la soluzione che si desidera risolvere questo problema in.

2) assicurarsi che tutte le modifiche in sospeso vengono controllati in perché si sta potenzialmente intenzione di modificare un crapton di documenti e non vogliono annullare l'altra in attesa di modifiche con questo.

3) in ogni stampa documento Ctrl + F per aprire la casella di ricerca, e fare clic sull'icona freccia verso il basso sul lato sinistro per espanderla alla ricerca/scatola di sostituzione.

4) Nella riga superiore, pasta:

([^\r]|^)\n 

In linea di fondo, pasta:

\r\n 

5) abilitare l'icona .* a "utilizzare le espressioni regolari" caratteristica.

6) Cambiare il menu a discesa accanto a quella icona in modo che dice "intera soluzione" o "Tutti i documenti aperti" o tutto ciò che è appropriato per la situazione.

7) Fare clic sul pulsante "Sostituisci tutto" che mostra ab -> ac nell'icona.

E questo è tutto!

Per inciso, avevo bisogno di questo perché i modelli di script di Unity sono tutti realizzati in MonoDevelop in modo che abbiano le terminazioni di linea Mac di default. Ho dovuto modificare tutti i documenti del percorso:

C:\Program Files\Unity\Editor\Data\Resources\ScriptTemplates 

Così li ho aperto in Visual Studio, ha seguito il processo di cui ho parlato sopra, usando "tutti i documenti aperti" al punto 6.

+0

Questo metodo ha finito per sostituire punti e virgola alle estremità delle linee. Ma ho ancora usato questa risposta per cercare le aree problematiche in modo che potessi sistemarle manualmente, quindi ti ho votato. – William

+0

Sì, questo rimuove anche alcune parentesi e parentesi per me. (Oltre al punto e virgola sopra menzionato) – bkribbs

20

Proprio per una risposta più completa, questo ha funzionato meglio per me:

Sostituire

(?<!\r)\n 

con

\r\n 

in intera soluzione con opzione "regEx".

Questo imposterà la riga corretta che termina in tutti i file che non avevano la linea corretta finita finora. Usa il lookahead negativo per verificare la non esistenza di un \ r davanti a \ n.

Prestare attenzione alle altre soluzioni: modificheranno tutte le righe in tutti i file (ignorando la fine della riga originale) o elimineranno l'ultimo carattere di ogni riga.

+0

essere avvertito, questo metodo non ha funzionato per me.Nel mio caso VS 2017 stava puntando alla linea sbagliata durante il debug, quindi ho provato questo metodo ma senza successo. L'uso della correzione automatica di fine riga fornita da VS ha fatto il trucco. – Rafal

0

Se avete Cygwin con il pacchetto cygutils installato, è possibile utilizzare questa catena di comandi da shell Cygwin:

unix2dos -idu * cpp | sed -e '//[1-9] [0-9] //' -e 's/[1-9] [0-9] * 0 //' | sed '/ [1-9] [0-9] /! d' | sed -e 's/[1-9] [0-9] //' | xargs unix2dos

(Sostituire il * cpp con qualsiasi carattere jolly è necessario)

Per capire come funziona, il comando unix2dos viene utilizzato per convertire i file, ma solo i file che hanno fine riga incoerenti (ie , una combinazione di UNIX e DOS) devono essere convertiti. L'opzione -idu visualizza il numero di dos e unix di fine riga nel file. Per esempio:

0  491 Acad2S5kDim.cpp 
689  0 Acad2S5kPolyline.cpp 
    0  120 Acad2S5kRaster.cpp 
433  12 Acad2S5kXhat.cpp 
    0  115 AppAuditInfo.cpp 

Qui, solo il file Acad2S5kXhat.cpp deve essere convertito. I comandi sed filtrano l'output per produrre un elenco dei soli file che devono essere convertiti e questi vengono quindi elaborati tramite xargs.

Problemi correlati