Dosyamı utf8'e dönüştürmek için vim'i nasıl kullanabilirim?


Yanıtlar:


179

Latin1 olarak kodlanmış bir dosyayı düzenliyorsanız, bu arabellek için 'dosya kodlamasının' latin1 olarak ayarlandığını göreceksiniz. Bu nedenle, dosyayı kaydetmeden önce dosya kodlamasını manuel olarak ayarlamanız gerekecektir.

:set fileencoding=utf8
:w myfilename

Ayrıca, UTF8 dosyalarının genellikle sonu gösteren bir Bayt Sırası İşareti (BOM) ile başladığını unutmayın. BOM isteğe bağlıdır ancak bazı programlar dosya kodlamasını belirlemek için özel olarak kullanabilirsiniz. Belirli koşullar altında Vim ürün reçetesini yazacak, ancak bazen yazmayacaktır. Malzeme Listesini açıkça ayarlamak için şunu yapın:

:set bomb

Daha fazla bilgi için :help mbyte-optionsve :help utf8ve :help bomb.


Talimatları çalışma cezası çıkması, ancak: 1) utf-8 endianness'ın yok (gibi vim yardım açıklıyor , utf-8 BOM sadece dosya belirtir olan utf-8); 2) Dosyayı daha sonra tekrar açtığınızda, set fileencoding=utf-8yeniden ön plana çıkmanız gerekir . Vim, ona bir tane yazmasını söyleseniz bile BOM'u fark etmez (ve gerçekten de yazar). Utf-8'in çalışması için buna veya set encoding=utf-8başlangıç ​​ayarlarınıza ihtiyacınız var . En azından benim sistemimdeki hikaye bu.
Stein

35
:w ++enc=utf-8 %

Dosyayı utf-8 kodlamasında diske yazmak için.


5
Bu doğru olmasına rağmen, cevabınız Eric Johnson'ınkine kıyasla çok fazla olumlu oy toplamamalıydı. Bunun nedeni, ayarlamazsanız fileencoding, :w ++enc=utf-8bir kez geçerli olacaktır, ancak bir dahaki sefer çalıştırdığınızda :wdeğerinin 'fileencoding'kullanılması ve değiştirmediyseniz (açıkça düzenlerken veya dosyayı yeniden yükleyerek, umarak) bu 'fencs'uygun şekilde ayarlanır ve gerçek kodlama iyi tespit edilirse, eski kodlama geri gelecektir.
Benoit

1
@ MichaelKrelin-hacker, değişmek fileencodingde soruya geçerli bir cevaptır, bu da IMO'nun kötü alışkanlıklar edinmesine yol açmaz. Ama tamam, sanırım bu sadece bir ruh hali meselesi.
Benoit

3
@Benoit, Eric'in cevabının geçerli olmadığını ima etmedim! Cevabında garip bir şey bulursam, içerik değil, soruyu ve kendi sorusunun cevabını neden hızlı bir şekilde arka arkaya
gönderdi

3
@Michael Krelin - hacker: SSS bölümüne bakın. Aslında kendi sorunuzu yanıtlamanız teşvik edilir. Bunun gibi bir Soru-Cevap sayfasının tüm amacı budur. Kimin cevapladığı önemli değil.
0xC0000022L

2
@ 0xC0000022L, en son kontrol ettiğimde (şimdi kontrol etmedim), bir dakika içinde soru cevap göndermekle ilgili değil, araştırmayı yaptıktan sonra bir çözüm bulmakla ilgili bir şey vardı . Bununla birlikte, cevabının ne tuhaf olduğu hakkında konuşuyordum , onu geçersiz kılan veya başka bir şey değil.
Michael Krelin - hacker
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.