Respostas:
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:
:!chardet %
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 faz chardet
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?
mostrou UTF-8
não porque o arquivo no disco era UTF-8, mas porque o VIM está configurado para usar UTF-8 internamente.
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:
:e ++enc=<encoding>
onde encoding
poderia estarcp850, ISO-8859-1, UTF-8, ...
Você pode usar file yourfilename
para encontrar a codificação ou chardetect
(fornecida por python-chardet
ou uchardet
dependendo da sua distribuição Linux), conforme sugerido por dotancohen.