Lihat titik kode Unicode dari karakter saat ini

36

Bagaimana saya bisa melihat titik kode Unicode dari karakter tempat kursor berada? Misalnya, jika kursor saya pada karakter, saya ingin Vim memberi tahu saya bahwa itu adalah U + 2318 .

Informasi alternatif, seperti representasi basis-10 (8984) atau representasi UTF-8 (E2 8C 98) akan dapat diterima.

Saya bertanya tentang Unicode dan UTF-8 karena mereka paling umum, tetapi jika jawabannya digeneralisasikan ke set karakter lain dan penyandian, itu akan baik untuk diketahui juga.

200_sukses
sumber

Jawaban:

45

Anda dapat menggunakan %batau %Bdalam statuslineatau rulerformat. Dari :help statusline:

b N   Value of character under cursor. 
B N   As above, in hexadecimal. 

Sebagai contoh:

set statusline=%b\ %B

Memberi anda:

8984 2318

Cara lain adalah dengan menggunakan gaatau :asciiperintah. Dari :help ga:

:as[cii]        or                                      ga :as :ascii
ga                      Print the ascii value of the character under the
                        cursor in decimal, hexadecimal and octal.

Yang akan memberi Anda:

<⌘> 8984, Hex 2318, Octal 21430

Pemetaan lain yang bermanfaat adalah g8:

e2 8c 98

Yang mencetak nilai hex byte aktual yang disimpan dalam file (perintah ini mengasumsikan UTF-8).

Selain itu ada dua plugin bermanfaat yang bisa Anda gunakan:

  • unicode.vim menambahkan berbagai perintah terkait unicode yang bermanfaat. Gunakan :UnicodeNameuntuk mendapatkan detail karakter di bawah kursor.

  • characterize.vim ; ini memperluas gaperintah dengan nama unicode, mirip dengan unicode.vim.

Martin Tournoij
sumber
"perintah ini mengasumsikan UTF-8" - dokumentasi mengatakan ini, tetapi pengalaman saya adalah bahwa ia berfungsi dalam apa pun encoding(tetapi tidak menghormati fileencoding).
Random832
3
Setelah percobaan lebih lanjut, a jika encodingdiatur ke pengkodean multibyte non-utf8 seperti cp932, g8hanya akan mencetak byte pertama, tetapi gaakan menampilkan nomor karakter lengkap.
Random832
Apakah ada cara agar output g8 muncul di statusline dengan sendirinya? Agak suka pertanyaan asli dengan bagian "informasi alternatif".
0fnt