La convenzione per i file di testo Unix è che ogni riga è terminata da una nuova riga e che le nuove righe sono terminazioni di riga, non separatori di riga.
Quando Vim salva un buffer come file, termina ogni riga con la sequenza di fine riga per quel formato di file, che per Unix è una nuova riga. Vedi
:help 'fileformat'
Se stai utilizzando strumenti di elaborazione del testo Unix, è meglio attenersi a questa convenzione. Tuttavia, se hai bisogno di non inserire una nuova riga alla fine dell'ultima riga di un file, puoi farlo. Vim considera tali file come "binari". Vedi
:help 'binary'
:help edit-binary
Vim 8.0 ora prevede questo con il fixeol
opzione. In particolare se lo fai:
:set nofixeol
quindi Vim non lo farà aggiungi un carattere di nuova riga finale alla fine della riga finale se il file non ne aveva già uno.
Potrebbe andare in un plug-in del tipo di file o forse anche nel tuo .vimrc
.
(Questo è un miglioramento rispetto a :set binary
perché influisce solo sul carattere di interruzione di riga finale, mentre binary
cambia anche un sacco di altri comportamenti, che probabilmente non vorrai a meno che tu non stia effettivamente modificando un file binario.)
Un file appena creato avrà ancora un carattere di interruzione di riga finale per impostazione predefinita. Puoi cambiarlo (e cambiare un file che ha già una nuova riga finale per non averne una) facendo inoltre:
:set noeol
Questo deve essere impostato specificamente per ogni file che desideri modificare:il caricamento di un file in un buffer imposterà sempre eol
in modo che corrisponda allo stato corrente del file.
Vim non sta aggiungendo nulla che non ci hai messo tu stesso.
Un carattere "newline" è not una "nuova riga" ed entrambi gli esempi sono perfettamente normali:
- nel primo, il file contiene solo una riga, quindi ottieni un carattere di "nuova riga",
- nella seconda, il file contiene due righe in modo da ottenere due caratteri "newline".