Veja o ponto de código Unicode do caractere atual

36

Como posso ver o ponto de código Unicode do caractere onde está o cursor? Por exemplo, se meu cursor estiver em um personagem, eu gostaria que o Vim me dissesse que é U + 2318 .

Informações alternativas, como a representação da base 10 (8984) ou a representação UTF-8 (E2 8C 98), seriam aceitáveis.

Eu pergunto sobre Unicode e UTF-8 porque eles são mais comuns, mas se a resposta generalizar para outros conjuntos de caracteres e codificações, seria bom saber também.

200_success
fonte

Respostas:

45

Você pode usar %bou %Bem statuslineou rulerformat. De :help statusline:

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

Por exemplo:

set statusline=%b\ %B

Da-te:

8984 2318

Outra maneira é usar gaou o :asciicomando. De :help ga:

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

O que lhe dará:

<⌘> 8984, Hex 2318, Octal 21430

Outro mapeamento útil é g8:

e2 8c 98

Que imprime o valor hexadecimal dos bytes reais armazenados no arquivo (este comando assume UTF-8).

Além disso, existem dois plugins úteis que você pode usar:

  • O unicode.vim adiciona vários comandos úteis relacionados ao unicode. Use :UnicodeNamepara obter detalhes do personagem sob o cursor.

  • characterize.vim ; isso expande o gacomando com o nome unicode, semelhante ao unicode.vim.

Martin Tournoij
fonte
"este comando assume UTF-8" - a documentação diz isso, mas minha experiência é que funciona em qualquer encoding(mas não respeita fileencoding).
Random832
3
Após experimentações adicionais, a if encodingé definido como uma codificação multibyte não utf8, como cp932, g8imprimirá apenas o primeiro byte, mas gamostrará o número completo de caracteres.
Random832
Existe uma maneira de exibir a saída do g8 na linha de status sozinha? Mais ou menos como a pergunta original com a parte "informações alternativas".
0fnt