2012-02-16 17 views
75

Mam plik tekstowy. Powiedziano mi, żeby zrobił to UTF8. Jak mogę to zrobić w Vim?Jak mogę użyć vima do konwersji mojego pliku na utf8?

+0

możliwy duplikat [opcji kodowania Vima] (http://stackoverflow.com/questions/8121609/vims-encoding-options) – Benoit

+0

możliwy duplikat [Jak mogę zmienić kodowanie pliku za pomocą vim?] (Http://stackoverflow.com/questions/778069/how-can-i-change-a-files-encoding-with-vim) – Tonin

Odpowiedz

111

Jeśli edytujesz plik zakodowany jako latin1, zobaczysz, że "fileencoding" dla tego bufora jest ustawione na latin1. Musisz więc ręcznie ustawić kodowanie plików przed zapisaniem pliku.

:set fileencoding=utf8 
:w myfilename 

Należy również zauważyć, że pliki UTF8 często zaczynają się od znaku Byte Order (BOM), który wskazuje endianness. Opcja BOM jest opcjonalna, ale niektóre programy używają jej wyłącznie do określenia kodowania plików. W pewnych warunkach Vim zapisze BOM, ale czasami nie. Aby jawnie ustawić LM to zrobić:

:set bomb 

Aby uzyskać więcej informacji :help mbyte-options i :help utf8 i :help bomb.

+7

Ktoś podłożył nam bombę. – pfrenssen

28
:w ++enc=utf-8 % 

do zapisania pliku w kodowaniu utf-8 na dysk.

+0

Próbowałem tego i działa. Dzięki! –

+3

Chociaż jest to poprawne, twoja odpowiedź nie powinna zebrać tylu uprowadzeń w porównaniu do Erica Johnsona. Powodem jest to, że jeśli nie ustawisz 'fileencoding',': w ++ enc = utf-8' jest ważne jeden raz, ale następnym razem, gdy uruchomisz ': w', wartość' 'fileencoding'' będzie być użyte, a jeśli go nie zmieniłeś (jawnie podczas edycji lub poprzez ponowne załadowanie pliku, mając nadzieję, że '' fencs'' zostanie odpowiednio ustawiony i faktyczne kodowanie zostanie dobrze wykryte), stare kodowanie powróci. – Benoit

+0

@Benoit, nie zmieniam 'fileencoding', ponieważ odpowiadam na to pytanie, a nie tylko mówię wszystko, co wiem o kodowaniu i jak działa z nimi vim. To może trochę potrwać. –

Powiązane problemy