Come posso usare vim per convertire il mio file in utf8?


Risposte:


179

Se stai modificando un file codificato come latin1, troverai che 'fileencoding' per quel buffer è impostato su latin1. Quindi sarà necessario impostare manualmente la codifica del file prima di salvare il file.

:set fileencoding=utf8
:w myfilename

Si noti inoltre che i file UTF8 spesso iniziano con un Byte Order Mark (BOM) che indica endianness. La distinta componenti è opzionale ma alcuni programmi la utilizzano esclusivamente per determinare la codifica del file. In certe condizioni Vim scriverà la BOM ma a volte no. Per impostare esplicitamente la distinta materiali, procedere come segue:

:set bomb

Per ulteriori informazioni :help mbyte-optionse :help utf8e :help bomb.


Le istruzioni risultano funzionare bene, ma: 1) utf-8 non ha endianness (come spiega vim help , il BOM utf-8 indica semplicemente che il file è utf-8); 2) Quando riapri il file in un secondo momento, devi averlo di set fileencoding=utf-8nuovo in primo piano. Vim non si accorge nemmeno del BOM se gli hai detto di scriverne uno (e lo scrive effettivamente). Per far funzionare utf-8, è necessario quello o set encoding=utf-8nelle impostazioni di avvio. Almeno, questa è la storia sul mio sistema.
Stein

35
:w ++enc=utf-8 %

per scrivere il file nella codifica utf-8 su disco.


5
Anche se questo è corretto, la tua risposta non avrebbe dovuto raccogliere così tanti voti positivi rispetto a Eric Johnson. Il motivo è che se non si imposta fileencoding, :w ++enc=utf-8è valido una volta, ma la prossima volta che si esegue verrà utilizzato :wil valore di 'fileencoding'e se non lo si è modificato (esplicitamente durante la modifica o ricaricando il file, sperando che 'fencs'è impostato in modo appropriato e la codifica effettiva è ben rilevata), la vecchia codifica tornerà.
Benoit

1
@ MichaelKrelin-hacker, il cambiamento fileencodingè anche una valida risposta alla domanda, che non secondo IMO porta ad assumere cattive abitudini. Ma OK, suppongo sia solo una questione di umore.
Benoit

3
@Benoit, non volevo dire che la risposta di Eric non fosse valida! Se trovo qualcosa di strano nella sua risposta, non è il contenuto, ma piuttosto perché ha pubblicato la domanda e la risposta alla sua stessa domanda in rapida successione :)
Michael Krelin - hacker

3
@Michael Krelin - hacker: controlla le FAQ. In realtà è incoraggiato a rispondere alla tua domanda. È il punto centrale di una pagina di domande e risposte come questa. Non importa chi risponde.
0xC0000022L

2
@ 0xC0000022L, l'ultima volta che ho controllato (non ho controllato ora), c'era qualcosa nel trovare una soluzione dopo aver fatto la ricerca, non nel postare domande e risposte in un minuto . Detto questo, stavo solo parlando di ciò che è strano nella sua risposta, non di ciò che la rende non valida o qualcosa del genere.
Michael Krelin - hacker
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.