Non aggiungere una nuova riga alla fine di un file


11

Vim aggiunge sempre una nuova riga alla fine dei miei file durante il salvataggio e sta causando errori nei miei script PHP.

Come posso fare in modo che Vim non aggiunga questa nuova riga al salvataggio?


7
"sta causando errori nei miei script PHP" -> Questo è strano? PHP dovrebbe funzionare bene con una nuova riga finale. In realtà, questo è praticamente standard. Forse hai una riga vuota dopo la ?>quale PHP restituisce al browser (causando "intestazioni già inviate" -error)? Non hai bisogno di un trascinamento ?>, e di solito si consiglia di lasciarlo fuori per prevenire esattamente questo problema.
Martin Tournoij,

Immagino sia fuorviante. I nostri script interpretano qualsiasi output come un errore.
Dan,


1
No. Vim non sta aggiungendo una nuova linea.
romainl,

Risposte:


11

Questa non è una linea completamente vuota, solo una nuova riga finale alla fine dell'ultima riga. Gli strumenti Unix (come l'eredità di Vim) insistono nell'aggiungerlo, mentre il sistema operativo Windows non è così rigoroso. Puoi leggere di più su questo in Perché i file dovrebbero finire con una nuova riga?

Sfortunatamente, è abbastanza complesso impedire a Vim di scrivere la nuova riga finale. Il mio plugin PreserveNoEOL può farlo. Per una discussione sugli approcci, vedere anche VIM Disabilita Newline automatico alla fine del file .


Notando solo per i futuri lettori che mentre questa risposta era eccezionale al momento, nelle versioni più recenti di Vim c'è una soluzione molto più semplice in una risposta pubblicata in seguito .
Ricco

11

Nelle nuove versioni di Vim c'è finalmente un'opzione per questo

Vim 7.4.785 aggiunge l'opzione 'fixeol' che può essere disabilitata per preservare automaticamente qualsiasi EOL mancante alla fine del file.

(vedi la pagina wiki: http://vim.wikia.com/wiki/Do_not_auto-add_a_newline_at_EOF )

Nel tuo ~/.vimrcaggiungi questa riga:

set nofixeol

Riavvia vim, ora non dovrebbe aggiungere la nuova riga alla fine del file.

(funziona solo dalla versione 7.4.785 di vim)


0

Hai provato ad aprire il file in modalità binaria? Prova vim -b file_name. Non dovrebbe aggiungere la nuova riga alla fine del file.


Ho provato a farlo, e poi usando xxdper verificare, ma aggiunge ancora un linefeed ( 0a) anche in modalità binaria.
James,
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.