A configuração de codificação de arquivo mostra a codificação do buffer atual:
:set fileencoding
fileencoding=utf8
Realmente não existe uma maneira comum de determinar a codificação de um arquivo de texto sem formatação, pois essas informações não são salvas no próprio arquivo - exceto Arquivos UTF-8, nos quais você tem a chamada BOM que indica a codificação. É por isso que os arquivos xml e html possuem metatags de charset.
Você pode aplicar uma codificação específica com a configuração 'codificação'. Veja :help encoding
e :help fileencoding
no Vim como o editor lida com essas configurações. Você também pode adicionar várias configurações de codificação de arquivo ao vimrc para que o vim tente detectar com base nas listadas.
Observe que a codificação dos arquivos não é explicitamente declarada em nenhum lugar do arquivo. Portanto, o VIM e outros aplicativos devem adivinhar a codificação. A maneira canônica de fazer isso é com o
chardet
aplicativo, que pode ser executado no VIM da seguinte maneira:A resposta fornecida pelo jtimberman mostra a codificação do buffer atual que pode não ser a mesma que o arquivo no disco. Assim, você notará que
chardet
algumas vezes mostra uma codificação diferente do VIM, especialmente se você tiver o VIM configurado para sempre usar uma codificação específica (por exemplo, UTF-8).O bom
chardet
é que ele fornece uma pontuação de confiança para sua estimativa, enquanto o VIM pode estar (e geralmente está) errado em adivinhar a codificação se não houver muitos caracteres acima de \ x7F (ASCII 127). Por exemplo, adicionar um únicoא
a um arquivo longo de código PHP fazchardet
pensar que o arquivo estáISO-8859-2
com uma confiança de 0,72, enquanto adicionar a frase um pouco mais longaשלום, עולם!
fornece ao UTF-8 uma pontuação de confiança de 0,99. Nos dois casos,set fileencoding?
mostrouUTF-8
não porque o arquivo no disco era UTF-8, mas porque o VIM está configurado para usar UTF-8 internamente.fonte
chardet <file>
. Ainda assim, boa sugestão.Eu descobri que: https://vim.fandom.com/wiki/Reloading_a_file_using_a_different_encoding
Você pode recarregar um arquivo usando uma codificação diferente se o Vim não conseguir detectar a codificação correta:
onde
encoding
poderia estarcp850, ISO-8859-1, UTF-8, ...
Você pode usar
file yourfilename
para encontrar a codificação ouchardetect
(fornecida porpython-chardet
ouuchardet
dependendo da sua distribuição Linux), conforme sugerido por dotancohen.fonte