Risposte:
L'impostazione di codifica file mostra la codifica del buffer corrente:
:set fileencoding
fileencoding=utf8
Non esiste davvero un modo comune per determinare la codifica di un file di testo normale, poiché tali informazioni non vengono salvate nel file stesso, ad eccezione dei file UTF-8 in cui è presente una cosiddetta distinta componenti che indica la codifica. Questo è il motivo per cui i file xml e html hanno metatag charset.
È possibile applicare una codifica particolare con l'impostazione "codifica". Vedi :help encoding
e :help fileencoding
in Vim per come l'editor gestisce queste impostazioni. Puoi anche aggiungere diverse impostazioni di codifica dei file al tuo vimrc per fare in modo che vim tenti di rilevare in base a quelli elencati.
Si noti che la codifica dei file non è esplicitamente dichiarata in nessun punto del file. Pertanto, VIM e altre applicazioni devono indovinare la codifica. Il modo canonico di farlo è con l' chardet
applicazione, che può essere eseguita da VIM in questo modo:
:!chardet %
La risposta fornita da jtimberman mostra la codifica del buffer corrente che potrebbe non essere la stessa codifica del file sul disco. Pertanto, noterai che chardet
a volte mostrerà una codifica diversa da VIM, specialmente se hai VIM configurato per utilizzare sempre una codifica specifica (cioè UTF-8).
La cosa bella chardet
è che dà un punteggio di confidenza per la sua ipotesi, mentre VIM può essere (e spesso è) sbagliato nell'indovinare la codifica se non ci sono molti caratteri sopra \ x7F (ASCII 127). Ad esempio, l'aggiunta di un singolo א
file a un lungo file di codice PHP fa chardet
pensare che il file abbia ISO-8859-2
una confidenza di 0,72, mentre l'aggiunta della frase leggermente più lunga שלום, עולם!
dà a UTF-8 un punteggio di confidenza di 0,99. In entrambi i casi, set fileencoding?
mostrato UTF-8
non perché il file sul disco era UTF-8, ma perché VIM è configurato per utilizzare UTF-8 internamente.
chardet <file>
. Comunque, buon consiglio.
Ho scoperto che: https://vim.fandom.com/wiki/Reloading_a_file_using_a_different_encoding
Puoi ricaricare un file usando una codifica diversa se Vim non è stato in grado di rilevare la codifica corretta:
:e ++enc=<encoding>
dove encoding
potrebbe esserecp850, ISO-8859-1, UTF-8, ...
Puoi usare file yourfilename
per trovare la codifica o chardetect
(fornito da python-chardet
o in uchardet
base alla tua distribuzione Linux) come suggerito da dotancohen.