Perché vim sta creando file con terminazioni di riga DOS?


15

io ho

set fileformat=unix

nel mio .vimrc, e tuttavia se creo un file vim(in esecuzione su Cygwin) persiste nella creazione di file in formato DOS e devo eseguirli dos2unixper pulirli. (Mi sa che in realtà non ho a, dal momento che Git li pulisce per me, ma appena mi bug di morte che un editor di testo Unix, che ho specificamente incaricato di utilizzare Unix fine riga, li sta inquinando di spazzatura in più .)

Perché dovrebbe succedere? Come posso ripararlo? (E per "correzione" non intendo qualcosa che mi richiede di convertire ogni file singolarmente. Non è una correzione. Questo è ciò che è totalmente rotto.)


Scommetto che questo è un problema di Cygwin. C'è un'opzione in Cygwin per scegliere lo stile di fine linea ma non ho visto alcuna prova che funzioni davvero. La mia università usa Eclipse con cygwin per la raccolta di compilatori GNU e ho riscontrato un comportamento strano con il getlinequale si è rivelato essere cygwin che fa qualcosa di strano. Il risultato è uno stile CR+LFUnix LFo addirittura dos LF+CR. Dovresti controllare e vedere quale stile di fine linea hai configurato in Cygwin ma YMMV. Vedi anche cygwin.com/faq/faq-nochunks.html#faq.api.cr-lf
Matt

@ Matt: DOS / Windows fa uso CR+LF, non è LF+CR.
ecristopherson

Avevo paura di scambiare quelli se non avessi ricontrollato, sono passato più di un semestre da quando ho avuto quel problema. Le terminazioni di linea erano diverse quando si esegue in cygwin e quando si esegue al prompt di DOS e ricordo di essere stato convinto che fosse all'indietro da quello che ti aspetteresti da DOS, ma come puoi vedere sono facili da cambiare.
Matt

Sei sicuro che questo .vimrc sia persino letto? Prova a fare un errore deliberato e vedi se vim lo rileva.
un CVn il

@ MichaelKjörling: sì, ho testato e viene letto. Ho commentato la mia set numberlinea, che ha avuto effetto e che è stata decommentata e che ha avuto effetto. Ho anche aggiunto "blah blah blah" in fondo, e ho ottenuto "Premi INVIO o digita comando per continuare" quando ho aperto qualcosa, ma stranamente non c'era nessun messaggio di errore prima di quello (a meno che non fossero lettere nere su sfondo nero).
iconoclasta

Risposte:


21

L'impostazione fileformatpotrebbe non essere sufficiente, a seconda di alcuni fattori. Prova questo:

set fileformat=unix
set fileformats=unix,dos
"set nobinary

Per capire cosa fanno, dai un'occhiata :help fileformats, ecc.

Penso di essere in grado di riprodurre i tuoi problemi, utilizzando la funzione vim.exefornita da gitin Windows. L'uso delle impostazioni precedenti ha risolto il problema per me. Nell'esempio set nobinaryè commentato perché non penso che tu ne abbia bisogno, l'ho lasciato lì come un suggerimento che potrebbe aiutare nel caso in cui tu abbia bisogno di indagare ulteriormente.

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.