it-swarm.asia

Bagaimana cara menemukan penyandian buffer saat ini di vim?

Katakanlah saya mengedit beberapa file dengan vim (atau gvim). Saya tidak tahu tentang penyandian file dan saya ingin tahu apakah itu dalam UTF-8 atau ISO-8859-1 atau apa pun? Dapatkah saya memberitahu vim untuk menunjukkan kepada saya encoding apa yang digunakan?

88
innaM

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 mengetahui bagaimana editor menangani pengaturan ini. Anda juga dapat menambahkan beberapa pengaturan fileencoding ke vimrc Anda agar vim mencoba mendeteksi berdasarkan yang terdaftar.

102
jtimberman

Perhatikan bahwa penyandian file adalah tidak secara eksplisit dinyatakan di mana saja dalam file. Dengan demikian, VIM dan aplikasi lain harus menebak pada penyandian. Cara kanonik untuk melakukan ini adalah dengan aplikasi chardet, yang dapat dijalankan dari dalam VIM dengan demikian:

:!chardet %

Jawaban yang diberikan oleh jtimberman menunjukkan kepada Anda pengkodean buffer saat ini yang mungkin bukan encoding yang sama dengan file pada disk. Dengan demikian, Anda akan melihat bahwa chardet kadang-kadang akan menampilkan pengkodean yang berbeda dari VIM, terutama jika Anda memiliki VIM yang dikonfigurasi untuk selalu menggunakan pengkodean tertentu (mis. UTF-8).

Hal yang menyenangkan tentang chardet adalah ia memberikan skor kepercayaan untuk tebakannya, sedangkan VIM dapat (dan sering) salah dalam menebak pengodean jika tidak banyak karakter di atas\x7F (ASCII 127). Misalnya, menambahkan א tunggal ke file panjang PHP kode membuat chardet berpikir bahwa file tersebut ISO-8859-2 dengan kepercayaan 0,72, sedangkan menambahkan frasa 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.

12
dotancohen