Jawaban:
Pengaturan fileencoding menunjukkan penyandian buffer saat ini:
:set fileencoding
fileencoding=utf8
Sebenarnya tidak ada cara umum untuk menentukan pengodean file plaintext, karena informasi itu tidak disimpan dalam file itu sendiri - kecuali File UTF-8 di mana Anda memiliki BOM yang disebut yang menunjukkan Pengodean. Inilah sebabnya mengapa file xml dan html memiliki metatag charset.
Anda dapat menerapkan pengkodean tertentu dengan pengaturan 'pengodean'. Lihat :help encoding
dan :help fileencoding
di Vim untuk bagaimana editor menangani pengaturan ini. Anda juga dapat menambahkan beberapa pengaturan fileencoding ke vimrc Anda agar vim mencoba mendeteksi berdasarkan yang terdaftar.
Perhatikan bahwa penyandian file tidak secara eksplisit dinyatakan di mana pun dalam file. Dengan demikian, VIM dan aplikasi lain harus menebak pada pengkodean. Cara kanonik melakukan ini adalah dengan chardet
aplikasi, yang dapat dijalankan dari dalam VIM seperti:
:!chardet %
Jawaban yang diberikan oleh jtimberman menunjukkan kepada Anda pengkodean buffer saat ini yang mungkin bukan pengkodean yang sama dengan file pada disk. Dengan demikian, Anda akan melihat bahwa chardet
kadang-kadang akan menunjukkan pengkodean yang berbeda dari VIM, terutama jika Anda memiliki VIM yang dikonfigurasi untuk selalu menggunakan pengkodean tertentu (yaitu UTF-8).
Yang menyenangkan tentang itu chardet
adalah memberikan skor kepercayaan untuk tebakannya, sedangkan VIM bisa (dan sering) salah menebak menebak pengkodean jika tidak banyak karakter di atas \ x7F (ASCII 127). Misalnya, menambahkan satu א
ke file panjang kode PHP membuat chardet
berpikir bahwa file tersebut ISO-8859-2
dengan kepercayaan 0,72, sedangkan menambahkan frase yang sedikit lebih panjang שלום, עולם!
memberi UTF-8 dengan skor kepercayaan 0,99. Dalam kedua kasus, set fileencoding?
menunjukkan UTF-8
bukan karena file pada disk adalah UTF-8, tetapi karena VIM dikonfigurasi untuk menggunakan UTF-8 secara internal.
chardet <file>
. Tetap saja, saran yang bagus.
Saya menemukan bahwa: https://vim.fandom.com/wiki/Reloading_a_file_using_a_different_encoding
Anda dapat memuat ulang file menggunakan penyandian berbeda jika Vim tidak dapat mendeteksi penyandian yang benar:
:e ++enc=<encoding>
dimana encoding
bisacp850, ISO-8859-1, UTF-8, ...
Anda dapat menggunakan file yourfilename
untuk menemukan penyandian atau chardetect
(disediakan oleh python-chardet
atau uchardet
bergantung pada distribusi Linux Anda) seperti yang disarankan oleh dotancohen.