Como posso definir a codificação padrão do VIM como UTF-8?

57

Gostaria de contribuir para um projeto de código aberto que fornece strings traduzidas. Um de seus requisitos é que os contribuidores devem usar o UTF-8 como a codificação dos arquivos PO.

Estou usando o VIM 7.3 no Linux. Como posso ter certeza de que a codificação do VIM está definida como UTF-8, para que eu possa editar e salvar o arquivo .po da maneira correta?

    
por Paolo 27.10.2011 / 13:16

2 respostas

57

Quando o Vim lê um arquivo existente, ele tenta detectar a codificação do arquivo. Ao escrever o arquivo, o Vim usa a codificação de arquivo que detectou (exceto quando você diz de forma diferente). Assim, um arquivo detectado como UTF-8 é escrito como UTF-8, um arquivo detectado como Latin-1 é escrito como Latin-1 e assim por diante.

Por padrão, o processo de detecção é grosseiro. Todos os arquivos que você abrir com o Vim serão considerados como Latin-1, a menos que ele detecte uma marca de ordem de byte Unicode na parte superior. Um arquivo UTF-8 sem uma marca de ordem de byte será difícil de editar, porque quaisquer caracteres multibyte serão mostrados no buffer como seqüências de caracteres em vez de caracteres únicos.

Pior, o Vim, por padrão, usa o Latin-1 para representar o texto no buffer. Assim, um arquivo UTF-8 com uma marca de ordem de byte será corrompido por down-conversion para o Latin-1.

A solução é configurar o Vim para usar o UTF-8 internamente. Isso é, de fato, recomendado na documentação do Vim, e a única razão pela qual ele não está configurado dessa maneira é evitar a confusão entre os usuários que esperam que o Vim opere basicamente como um editor do Latin-1.

No seu .vimrc , adicione set encoding=utf-8 e reinicie o Vim.

Or instead, set the LANG environment variable to indicate that UTF-8 is your preferred character encoding. This will affect not just Vim but any software which relies on LANG to determine how it should represent text. For example, to indicate that text should appear in English (en), as spoken in the United States (US), encoded as UTF-8 (utf-8), set LANG=en_US.utf-8.

Agora o Vim usará o UTF-8 para representar o texto no buffer. Além disso, ele também fará um esforço mais determinado para detectar a codificação UTF-8 em um arquivo. Além de procurar por uma marca de ordem de byte, ele também verificará o UTF-8 sem uma marca de ordem de byte antes de retornar ao Latin-1. Portanto, ele não mais corromperá um arquivo codificado em UTF-8 e deverá exibir corretamente os caracteres UTF-8 durante a sessão de edição.

Para obter mais informações sobre como o Vim detecta a codificação do arquivo, consulte o fileencodings opção no Vim documentação .

Para obter mais informações sobre como definir a codificação que o Vim usa internamente, consulte o encoding opção .

Se você precisar substituir a codificação usada ao gravar um arquivo de volta para disco, consulte o fileencoding opção .

    
por 27.10.2011 / 19:52
3

De acordo com o vimdoc , o vim tenta detectar automaticamente a codificação do arquivo, portanto, se você estiver editando < arquivos strongs> existentes você deve ser bom.

Você sempre pode forçar a codificação se quiser com :set fileencodings=utf-8 . Você pode encontrar a documentação aqui .

    
por 27.10.2011 / 14:31