gVim mostrando ritorno a capo (^ M), anche quando la modalità file è esplicitamente DOS

StackOverflow https://stackoverflow.com/questions/799417

Domanda

Sto usando gVim su Windows. Il mio codice mostra i caratteri ^M alla fine delle linee. Ho usato :set ff=dos senza alcun risultato. I caratteri ^M rimangono per le linee esistenti, ma non si presentano per newlines I entrare. Ho modalità passato a Mac (mostra caratteri ^J) e UNIX (mostra anche personaggi ^M) e ritorno al DOS. Qualcun altro ha visto questo?

È stato utile?

Soluzione

Questo succede quando si ha una miscela di fine riga di Windows e quelli di Unix. Se si dispone di 100 linee, 99 sono \ r \ n ed uno è \ n, vedrete 99 caratteri ^ M. La correzione è quello di trovare che una linea e sostituirlo. O eseguire dos2unix sul file. È possibile sostituire i fine linea di Windows con:

:%s/\r\(\n\)/\1/g

Altri suggerimenti

È anche possibile eseguire:

:e ++ff=dos

Per rimuovere il ^M:. Vedere File - Vim Suggerimenti Wiki

Io di solito uso la seguente per ripulire i miei fine riga:

:g/^M$/s///

Per ottenere il ctrl-M io di solito digitare Ctrl-Q, poi Ctrl-M e mette dentro. (In alcuni ambienti può essere Ctrl-V poi Ctrl-M.) Non so perché, ma trovo che una più facile da ricordare di S '. RQ

Non dimenticare di fare :set ff=dos così, o si finirà per il risparmio con UNIX linea terminazioni fisse.

So che questo è già stato risposto, ma un trucco che uso è

:%s/\r/\r/g

Questa sostituisce il carrello ritorna UNIX con il CRLF finestre. Appena aggiunto nel caso qualcuno altro ha avuto problemi.

È possibile ignorare questi caratteri!

mettere questo nel vostro vimrc

  

partita Ignora / \ r $ /

In realtà ciò che ha funzionato per me (su Windows a 64 bit, gVim: 7.2) è stato:

:set ffs=dos

non solo: ff

L'esecuzione Vim 7.3 su Windows 7. Ho usato il seguente comando:

:%s/^M/\r/g

Per creare il ^ M ho digitato CTRL + Q e poi Ctrl + M.

Questo è probabilmente un po 'semplice per molti di voi, ma sulla remota possibilità è utile.

In base a risposta di richq, ho trovato questi ad essere utile nel mio vimrc. Nota, il secondo è commentata normalmente perché rende dd un po 'di confusione in quanto Vim aspettare un altro tratto chiave per capire se è il comando ex mappata.

function! D2u()
    execute '%s/\r\(\n\)/\1/g'
endfunction
"map d2u :%s/\r\(\n\)/\1/g

Il primo è gestito digitando call D2u() nella ex e la seconda premendo D2u in modalità di modifica.

Queste sono aggiunti fine riga CR di solito a causa di un utilizzando un file su sistemi UNIX / DOS misti.

Possibile la risposta più breve per rimuovere un singolo ^ M dalla fine di ogni riga, e quello che io uso, è:

:%s/\r

che è equivalente a:

:%s/\r//

, ma le barre finali non sono necessari (sono assunti).

provato un sacco di cose, ma il seguente lavorato

:%s/\r/\r/g

Nota: usare g se si desidera che l'effetto sul tutto il file

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top