Tidak dapat mengetik Unicode dengan Gvim dan VIM pada Windows 7

11

Saya ingin mengetik dalam berbagai bahasa menggunakan (g) Vim. Tetapi ketika saya beralih ke bahasa lain menggunakan bilah bahasa (karakter Devanagari atau Hindi), dan ketik apa saja, (g) tampilan vim ??? ??.

Apa yang saya coba:

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

Informasi:

  • Versi GVim: 7.4, dan juga + multi_byte-nya.
  • Tidak ada perubahan dalam file vimrc default.

Saya baru saja mulai dengan (g) vim.

msinfo
sumber
5
Mungkin hal font. Font apa yang Anda gunakan?
muru
1
7 font (konsol, 2 kurir, 2 lucida, fixedsys, dan terminal) tercantum dalam gvim. Saya mencoba semuanya. Meskipun sistem saya memiliki font lain juga, tetapi gvim hanya menampilkan 7. Saya juga mengikuti: stackoverflow.com/questions/3766204/vim-doesnt-support-unicode tetapi masih tidak berhasil.
msinfo
3
"Bahasa lain" agak kabur. Bahasa apa? Polandia? Ibrani? Cina? Klingon? Jika Anda menggunakan bahasa yang tidak jelas sangat mungkin tidak ada font yang mendukung bahasa itu.
Martin Tournoij
1
Dalam kasus saya, saya mencoba Malayalam dengan GVim 7.4.800 (atau sekitar itu) dengan font Ubuntu Mono . Untuk contoh teks, lihat Wikipedia bahasa Malayalam . Di Linux (Ubuntu dan Arch), dengan terminal dan font GVim diatur ke Ubuntu Mono, Malayalam memang muncul, bahkan jika itu sedikit diperas. Saya telah mencoba font lain msinfo yang disebutkan dalam komentar kedua.
muru
1
Di Linux, gvim dapat menampilkan karakter yang Anda inginkan karena Pango akan menarik mesin terbang dari font lain untuk dapat menampilkan semua karakter. Itu juga sebabnya karakter terlihat berbeda dari sisa teks Anda. Jika Anda mencoba hal yang sama di xterm, maka Anda tidak akan melihat semua karakter karena font tunggal digunakan. Saya menduga hal serupa terjadi di Windows.
jamessan

Jawaban:

5

Pengkodean standar tampaknya adalah latin1:

:set encoding?
  encoding=latin1

Saat memasukkan karakter, Vim mencoba mengubahnya dari set karakter yang masuk (mungkin unicode) ke latin-1. Ini gagal karena latin-1 tidak memiliki karakter ini. Karena itu tanda tanya.

Membuka file yang ada (Disimpan dengan notepad atau program lain) akan menghasilkan teks yang kacau karena sekarang Vim hanya mencoba membaca byte dan menafsirkannya sesuai dengan set karakter latin-1, dan tidak mengubahnya ke set latin-1.

Anda akan ingin menggunakan utf-8atau semacamnya:

:set encoding=utf-8

Setelah itu aksara Malayalam tampaknya berfungsi.

Perhatikan bahwa ini tidak akan membuat tanda tanya yang sudah ada berfungsi. Ini benar-benar adalah dikonversi ke tanda tanya (karakter 0x3f) pada input. Tidak ada cara untuk mendapatkan kembali apa yang dimasukkan. Saya menduga bahwa ini adalah sumber kebingungan dari pertanyaan ini.

Lihat juga :help 'encoding'.

Sebagai sidenote, mesin terbang yang tidak didukung dalam font biasanya diterjemahkan dengan mesin terbang yang berbeda; ini bervariasi per font, tetapi biasanya berupa blok persegi atau tanda tanya gaya yang berbeda. Anda dapat melihat perbedaan antara tanda tanya "nyata" dan mesin terbang yang tidak didukung g8, yang akan menampilkan kode karakter.

Martin Tournoij
sumber
1
Saya perlu mengetikkan karakter Devanagari atau Hindi. Pengkodean sebelumnya diatur ke latin1, itu diubah sesuai saran Anda ke utf-8. Tapi tetap saja tidak ada karakter Devanagari atau Hindi yang terlihat. Tetapi ketika saya menyalin kotak-kotak itu (seperti yang diberikan oleh VIM), dari VIM ke browser atau Notepad ++, mereka terlihat seperti karakter Unicode. Jadi VIM mengenali, tetapi tidak dapat menampilkannya.
msinfo
1
@msinfo Versi Vim mana yang Anda gunakan? Anda menyebutkan 7.4, tetapi tidak menyebutkan level patch? Saya menggunakan 7.4.1024 dari vim.org .
Martin Tournoij
1
Tampaknya belum ditambal, ketika saya mencoba mencari tahu dari salah satu jawaban Anda ;-) di vi.stackexchange.com/questions/2466/… . Vim --version tidak menampilkan info tambalan. Saya belum membuat perubahan plugin atau patch, setelah instalasi.
msinfo
4
@msinfo Vim 7.4 dirilis hampir dua setengah tahun yang lalu. Coba instal versi yang lebih baru. Mungkin hanya itu yang dibutuhkan?
Martin Tournoij