gVim mostrando ritorno a capo (^ M), anche quando la modalità file è esplicitamente DOS
-
18-09-2019 - |
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?
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
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