Windows 7'de Gvim ve VIM ile Unicode yazamıyorum


11

(G) Vim kullanarak farklı dillerde yazmak istiyorum. Ama dil çubuğunu (Devanagari veya Hintçe karakterler) kullanarak başka bir dile geçip bir şey yazdığımda, (g) vim görüntülenir ??? ??.

Ne denedim:

write ++enc=utf-8 foo.txt  
set fileencoding=utf-8   
set enc=utf-8

Bilgi:

  • GVim sürümü: 7.4 ve ayrıca + multi_byte.
  • Varsayılan vimrc dosyasında değişiklik yok.

(G) vim ile yeni başladım.


5
Bir yazı tipi olabilir. Hangi yazı tipini kullanıyorsunuz?
muru

1
7 font (consolas, 2 courier, 2 lucida, fixedsys ve terminal) gvim'de listelenmiştir. Hepsini denedim. Sistemimde başka fontlar olsa da, gvim sadece 7 görüntüler. Ben de takip ettim: stackoverflow.com/questions/3766204/vim-doesnt-support-unicode ama yine de şans yok.
msinfo

3
"Başka bir dil" oldukça belirsizdir. Hangi dil? Lehçe? İbranice? Çince? Klingonca? Belirsiz bir dil kullanıyorsanız, bu yazı tiplerinin hiçbirinin bu dili desteklememesi çok olasıdır.
Martin Tournoij

1
Benim durumumda, Ubuntu Mono yazı tipi ile GVim 7.4.800 (veya yaklaşık) ile Malayalam'ı deniyorum . Örnek metin için bkz. Malayalam Wikipedia . Linux'ta (Ubuntu ve Arch), terminal ve GVim yazı tipleri Ubuntu Mono'ya ayarlandığında, Malayalam biraz sıkışmış olsa bile ortaya çıkıyor. İkinci yorumda bahsedilen diğer yazı tipleri msinfo denedim.
16'da muru

1
Linux'ta, gvim istediğiniz karakterleri görüntüleyebilir, çünkü Pango tüm karakterleri görüntüleyebilmek için diğer yazı tiplerinden glifleri çeker. Bu yüzden karakterler metninizin geri kalanından farklı görünüyor. Aynı şeyi xterm'de denerseniz, tek bir yazı tipi kullanıldığı için tüm karakterleri görmezsiniz. Windows'da benzer bir şeylerin olduğundan şüpheleniyorum.
jamessan

Yanıtlar:


5

Varsayılan kodlama şöyledir latin1:

:set encoding?
  encoding=latin1

Karakterleri girerken, Vim bunları gelen karakter kümesinden (muhtemelen unicode) latin-1'e dönüştürmeye çalışır. Latin-1 bu karakterlere sahip olmadığından bu başarısız olur. Dolayısıyla soru işaretleri.

Varolan bir dosyayı (not defteri veya başka bir programla kaydedilmiş) açmak, Vim'in sadece baytları okumaya ve onları latin-1 karakter kümesine göre yorumlamaya ve onları latin-1 kümesine dönüştürmeye çalışmasına neden olduğundan bozuk metinle sonuçlanmalıdır.

Kullanmak isteyeceksiniz utf-8veya bunun gibi bazı şeyler:

:set encoding=utf-8

Bundan sonra Malayalam senaryosu işe yarıyor gibi görünüyor.

Not Bu olacağı değil önceden varolan soru işaretleri çalışması. Bunlar gerçekten vardır soru işaretleri (karakter dönüştürülmüş 0x3fgirişi). Girilenleri geri almanın bir yolu yoktur. Bunun bu sorunun karışıklığının kaynağı olduğundan şüpheleniyorum.

Ayrıca bkz :help 'encoding'.

Bir sidenote olarak, yazı tipindeki desteklenmeyen glifler genellikle farklı bir glif ile oluşturulur; bu yazı tipine göre değişir, ancak tipik olarak bir kare blok veya farklı bir tarz soru işaretidir. "gerçek" bir soru işareti ile desteklenmeyen bir glif g8arasındaki karakter kodunu gösteren farkı görebilirsiniz .


1
Devanagari veya Hintçe karakterler yazmam gerekiyor. Kodlama daha önce latin1 olarak ayarlanmıştı, önerinize göre utf-8 olarak değiştirildi. Ama yine de hiçbir Devanagari veya Hintçe karakter görünmüyor. Ancak bu kutuları (VIM tarafından işlendiği gibi) VIM'den tarayıcıya veya Notepad ++ 'a kopyaladığımda Unicode karakterlere benziyorlar. Böylece VIM bunları tanır, ancak görüntüleyemez.
msinfo

1
@ msinfo Hangi Vim sürümünü kullanıyorsunuz? 7.4'ten bahsettiniz, ancak yama seviyesinden bahsetmediniz mi? Vim.org'dan 7.4.1024 kullandım .
Martin Tournoij

1
Vi.stackexchange.com/questions/2466/… adresinde ;-) yanıtınızdan birini bulmaya çalıştığımda yamalı görünüyor . Vim --version hiçbir yama bilgisi göstermiyor. Kurulumdan sonra herhangi bir eklenti veya yama değişikliği yapmadım.
msinfo

4
@msinfo Vim 7.4 neredeyse iki buçuk yıl önce piyasaya sürüldü. Daha yeni sürümü yüklemeyi deneyin. Belki de tek gereken budur?
Martin Tournoij
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.