Created on 17 Sep 2012 ;    Modified on 10 Jan 2013

Vim: convertire i fine linea

Premessa: il formato dei file di testo

Parliamo del formato dei file di testo. Mi chiederete: "Ma di quale formato vai parlando? Nei file di testo non c'è formato."

E' vero. Nei file di testo non c'è formato.

Ma anche nei file di testo c'è un modo per dire: fine linea, vai a capo.

Il problema

Come spesso succede, se esiste una convenzione, la si implementa in modo diverso in ogni sistema che la deve interpretare. Per questo motivo il fine linea, vai a capo vale:

Quando si deve modificare in un computer un file di testo ottenuto da un diverso sistema operativo, si può capire che vi possono essere (e normalmente vi sono) problemi. Se poi abbiamo a che fare con un grosso file di testo in cui i fine linea sono misti, ad esempio alcune linee si chiudono con CR+LF e altre con il solo LF, allora portarsi ad una situazione omogenea, può richiedere un certo sforzo.

Come fare

Un buon editore di testi permette di convertire i fine linea. E, naturalmente, Vim è un buon editor di testi.

In particolare, è comodo utilizzare il comando:

:set fileformat=formato

che indica a Vim di leggere il file considerando il solo formato indicato. Formato può essere:

unix
dos
mac

Ad esempio, lavorando con un PC Windows, se si apre con Vim un file con fine linea misti, alcuni CR+LF e altri con il solo LF, vedremo dei ^M quà e là. Perché Vim, caricando il file lo interpreta come file Unix (solo LF, e quindi prende CR come un carattere da visualizzare; guarda caso CR è detto anche Control+M ovvero visualizzato ^M). Con il comando

:set fileformat=dos

diciamo a Vim di leggere con fine linea CR+LF. I fine linea orfani composti dal solo LF sono comunque validi, e correttamente interpretati. A questo punto un comando di scrittura salverà il file con tutti i fine linea a CR+LF:

:w

Riferimenti

Per chi conosce l'inglese, ed è interessato, può trovare una trattazione dettagliata in: Vim Tips Wiki: file format.