Observe que é mais seguro definir a codificação em LOCALE em vez de forçá-la no Vim, caso você edite um arquivo não Unicode. Você obterá o mesmo resultado, pois o padrão é LOCALE e você não confundirá nenhum caractere estrangeiro se encontrado.
timss
Respostas:
89
TL; DR
No primeiro caso com set encoding=utf-8, você mudará a codificação de saída que é mostrada no terminal.
No segundo caso com set fileencoding=utf-8, você alterará a codificação de saída do arquivo que está escrito .
Conforme declarado por @Dennis, você pode definir ambos em seu ~ / .vimrc se sempre quiser trabalhar em utf-8.
" encodingdefine como o vim deve representar os caracteres internamente . Utf-8 é necessário para a maioria dos sabores de Unicode."
" fileencodingdefine a codificação para um arquivo específico (local para buffer);: setglobal define o valor padrão. Um valor vazio também pode ser usado: o padrão é o mesmo de 'codificação'. Ou você pode definir uma das codificações ucs, Isso pode tornar o mesmo arquivo de disco maior ou menor, dependendo de sua combinação particular de caracteres. Além disso, IIUC, utf-8 é sempre big-endian (high bit primeiro), enquanto ucs pode ser big-endian ou little-endian, então se você usá-lo, você provavelmente precisará definir 'bomba "(veja abaixo)."
Desculpe, não entendo. O que o fileencoding faz mais exatamente?
Kiraly Zoltan
25
No primeiro caso, você mudará a codificação de saída que é mostrada no terminal. No segundo caso, você alterará a codificação de saída do arquivo que está escrito.
Adrien Lacroix
1
+1 Para uma resposta curta e doce, em vez de apenas repetir a documentação oficial! :)
425 nsp
Se necessário, ad-hoc diretamente da linha de comando vim -c "set encoding=utf-8" file.ext.
Hans Ginzel
87
set encoding=utf-8 " The encoding displayed.
set fileencoding=utf-8 " The encoding written to file.
Você também pode definir ambos em seu ~/.vimrcse quiser sempre trabalhar com utf-8.
Você pode definir a variável 'fileencodings' em seu .vimrc.
Esta é uma lista de codificações de caracteres consideradas ao começar a editar um arquivo existente. Quando um arquivo é lido, o Vim tenta usar a primeira codificação de caracteres mencionada. Se um erro for detectado, o próximo na lista é tentado. Quando uma codificação que funciona é encontrada, 'fileencoding' é definido para ela. Se tudo falhar, 'fileencoding' é definido como uma string vazia, o que significa que o valor de 'encoding' é usado.
Vejo :help filencodings
Se você costuma trabalhar com, por exemplo, cp1252, pode adicioná-lo lá:
set fileencodings=ucs-bom,utf-8,cp1252,default,latin9
Respostas:
TL; DR
Conforme declarado por @Dennis, você pode definir ambos em seu ~ / .vimrc se sempre quiser trabalhar em
utf-8
.Mais detalhes
Do wiki do VIM sobre como trabalhar com Unicode
"
encoding
define como o vim deve representar os caracteres internamente . Utf-8 é necessário para a maioria dos sabores de Unicode.""
fileencoding
define a codificação para um arquivo específico (local para buffer);: setglobal define o valor padrão. Um valor vazio também pode ser usado: o padrão é o mesmo de 'codificação'. Ou você pode definir uma das codificações ucs, Isso pode tornar o mesmo arquivo de disco maior ou menor, dependendo de sua combinação particular de caracteres. Além disso, IIUC, utf-8 é sempre big-endian (high bit primeiro), enquanto ucs pode ser big-endian ou little-endian, então se você usá-lo, você provavelmente precisará definir 'bomba "(veja abaixo)."fonte
vim -c "set encoding=utf-8" file.ext
.Você também pode definir ambos em seu
~/.vimrc
se quiser sempre trabalhar com utf-8.fonte
Você pode definir a variável 'fileencodings' em seu .vimrc.
Vejo
:help filencodings
Se você costuma trabalhar com, por exemplo, cp1252, pode adicioná-lo lá:
fonte