UTF-8 Karakterleri VIM veya Gvim'de nasıl görüntülenir


106

Zaman zaman İngilizce olmayan komut dosyaları içeren web sayfalarında çalışıyorum, çoğu utf-8 karakter setini kullanıyor, VIM ve Gvim UTF-8 Karakterlerini doğru görüntülemiyor.

İle, pencerelerde 7 64 bit VIM 7.3.46 kullanma set guifont=Monaco:h10_vimrc içinde

Bunu düzeltmenin bir yolu var mı?

Güncelleme: Google'da dolaştım ve set guifontwidebölgesel diller için ikinci yedek olarak eylemler buldum .

_Vimrc'ye aşağıdaki satırları ekledim ve problemlerimin çoğu çözüldü.

set enc=utf-8
set fileencoding=utf-8
set fileencodings=ucs-bom,utf8,prc
set guifont=Monaco:h11
set guifontwide=NSimsun:h12

NSimsun Yukarıdaki yazı problemi, onlar VIM ile işe yazı tipi adını nasıl aldığını bilmiyorum, Çinliler için çalışıyor Courier Newolarak zikredilir Courier_Newda NSimsunyazı dizinde hiçbir yerde. LathaKullanmak istediğim yazı tipi ancak _vimrc Dosyasında nasıl kullanılacağını bilmiyorum. set guifontwide=latha:h12veya set guifontwide=Latha:h12çalışmıyor.

Ben başarıyla ayarlanırsa guifontwideiçin latha, o benim sorunum çözülecek, nasıl bunu yapmak için?


değeri 'guifont've değeri 'guifontwide'nedir? Ayrıca, hangi işletim sistemini kullanıyorsunuz ve hangi vim sürümünü kullanıyorsunuz?
Benoit

Sathish, buna bir çözüm bulabildin mi? EKalappai yazılımı ile gVim yazmaya çalışıyorum ama vim sadece bana gösteriyor? karakterler (görünüşe göre onları aynı şekilde kaydediyor).
sundar - Monica'yı eski durumuna getir

@sundar Hayır. Vazgeçtim: |
Sathish Manohar

Benim sorunum, inconsolata-g'nin belgemdeki utf-8 karakterlerini desteklememesiydi.
AndrewPK

set guifontwide=NSimsun:h12Benim için başarısız kullanmak , "Geçersiz geniş yazı tipi" diyor, muhtemelen aynı tek aralıklı olmayan sorun mu?
mikew

Yanıtlar:


61

Aşağıdakileri kullanarak belgeyi yeniden yüklemeyi deneyin:

:e! ++enc=utf8

Bu işe yararsa fileencodings, .vimrc dosyanızın ayarlarını değiştirmelisiniz .


2
Benim için hiçbir şeyi değiştirmiyor
Thomas Levesque

8
Yaptığınız değişiklikleri sileceğinden, çalışmanızı kaydetmeden bunu ÇALIŞTIRMAYIN . :useni kurtaracak.

Ayrıca bu, dosyayı bunu yaptığınızda salt okunur olacak şekilde ayarlar, böylece daha sonra çalıştırmanız da gerekir:set noro
Matt Vukomanovic

2
Bunun için teşekkürler. Vim benim durumumda utf-8'i oluşturmuyordu çünkü bir ikili veri bloğum vardı (multipart / form-data ek parçası). Bunu yaptığımda :e! ++enc=utf8, utf-8'i oluşturdu, ancak [ILLEGAL BYTE in line 286]dosyanın içinde (ilk ikili parça satırı) şikayet etti. Sanırım varsayılan davranış, Vim açılışında bu gerçekleştiğinde sessizce başka bir kodlamaya geri dönmek. Bazı nedenlerden dolayı, yine echo &encde bu durumda utf-8'i bildiriyor.
Dmitry Minkovsky

1
@DmitryMinkovsky, vim'in &encarabellek içeriklerini depolamak için dahili olarak kullandığı kodlamadır. Geçerli dosyanın kodlamasını içeren ayar&fenc
Benoit

60

Denedin mi

:set encoding=utf-8
:set fileencoding=utf-8

?


5
Her iki ayarı da denedim ve hala utf-8 karakterlerini göremiyorum.
Sathish Manohar

1
-1. Aslında bu işe yaramaz. Bu seçeneklerden hiçbiri dosyayı yeniden yüklemeyecektir. Birincisi, vim'in arabellekleri (ve diğer şeyleri) dahili olarak nasıl sakladığını değiştirecek, ikincisi ise zaten bir arabelleğe yüklenmiş olan ve kaydederken uygulanacak olan bir dosyanın kodlamasını değiştirmek istediğinizi belirtecektir.
Benoit

:set encoding=utf8 OLACAK tampon yenilemek ve problem hatalı kodlama durumunda, bunun çözecektir. set fileencoding=utf8Kaydederken en kafa karıştırıcı "Bazı karakterleri dönüştüremiyorum" hatasıyla karşılaşmayacağınız için seçenek ekledim .
Maxim Sloyko

set kodlaması çalıştı. .Vimrc dosyasına set encoding = utf8 ekledim ve şimdi her şey utf8 ile tamam.
Alexander Kim

OSX'te, bu iki satırı (iki nokta üst üste olmadan) ~/.vimrc
ürünüme

7

Japonlar buraya gelirse, lütfen aşağıdaki satırları ~/.vimrc

set encoding=utf-8
set fileencodings=iso-2022-jp,euc-jp,sjis,utf-8
set fileformats=unix,dos,mac

6

Microsoft Windows'ta gvim, tek aralıklı olmayan yazı tiplerini seçmenize izin vermez. Maalesef Latha tek aralıklı olmayan bir yazı tipidir.

Bunu gerçekleştirmenin bir hack yolu vardır: Latha.ttf dosyasını düzenlemek ve tek aralıklı yazı tipi olarak işaretlemek için FontForge kullanarak (Windows ikili dosyasını http://www.geocities.jp/meir000/fontforge/ adresinden indirebilirsiniz ). Böyle yapmak:

  1. Fontforge'u yükleyin, latha.ttf'yi seçin.
  2. Menü: Öğe -> Yazı Tipi Bilgisi
  3. Yazı Tipi Bilgileri iletişim kutusunun sol tarafındaki listeden "OS / 2" yi seçin
  4. "Panose" sekmesini seçin
  5. Oranı Ayarla = Tek Aralıklı
  6. Bu yazı tipinin yeni TTF sürümünü kaydedin, deneyin!

İyi şanslar!


1
Latha yazı tipini tek aralıklı olarak değiştiremedim. Adımlarınızı tam olarak takip ettim ancak kaydedilen dosya hala tek aralıklı yazı tipi olarak çalışmıyor :(
Sathish Manohar

1
@Sathish Manohar 1) mevcut TTF dosyasının üzerine yazın, Windows'u yeniden başlatın ve deneyin. veya 2) TTF'yi yeni bir dosyaya kaydedebilir ve yazı tipi adını değiştirebilirsiniz. Yeni TTF dosyasını yükleyin. Bu yeni yazı tipi listenizde bulunmalıdır.
Yi Zhao

Bunca yıldan sonra (7 yıl) sonra, VIM için birkaç ücretsiz yazı tipi mevcuttur. Google Noto yazı tipleri google.com/get/noto ; ve Iosveka github.com/be5invis/Iosevka/releases , değerlendirmek için çok iyi alternatiflerdir.
Yi Zhao

3

Linux'ta, VIM yapılandırma dosyasını açın

$ sudo -H gedit /etc/vim/vimrc

Aşağıdaki satırlar eklendi:

set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
set termencoding=utf-8
set encoding=utf-8

Kaydet ve çık ve terminal komutu:

$ source /etc/vim/vimrc

Şu anda VIM, Çince'yi doğru şekilde görüntüleyecektir.


2

Bu arada bu sorun çözüldü mü?

Boşken gvim'in tüm unicode karakterleri göstermemesi (sadece çift noktalı işaretler ve aksanlı karakterler dahil olmak üzere yalnızca bir alt küme) sorunu yaşadım :set guifont?; soruma bakın . Burayı okuduktan sonra, guifontmantıklı bir değere ayarlamak benim için sabitledi. Ancak, 2 baytı aşan karakterlere ihtiyacım yok.


1
Guifont için mantıklı bir değer nedir? Ne koydun?
Christian

Bu cevapta benim için çalışan değerleri listeledim .
Tobias

2

Windows GVim düzenleyicimde görünmesi için yüklediğim başka yazı tiplerini alamadım, bu yüzden Lucida Consoleen azından biraz daha iyi UTF-8 desteğine sahip olana geçtim . Bunu şu sayfanızın sonuna ekleyin _vimrc:

" For making everything utf-8
set enc=utf-8
set guifont=Lucida_Console:h9:cANSI
set guifontwide=Lucida_Console:h12

Şimdi en azından bazı UTF-8 karakterleri görüyorum.


benim durumumda cANSI, cGREEK (GVim'de Düzenle -> Yazı Tipi Seç ...) olarak, Yunanca karakterlerle UTF-8 kodlanmış bir metin dosyasını doğru şekilde görüntülemek için Consolas yazı tipiyle değiştirilmek zorunda kaldı
hello_earth

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.