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 encodinge :help fileencodingin 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' chardetapplicazione, 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 chardeta 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 chardetpensare che il file abbia ISO-8859-2una 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-8non 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 encodingpotrebbe esserecp850, ISO-8859-1, UTF-8, ...
Puoi usare file yourfilenameper trovare la codifica o chardetect(fornito da python-chardeto in uchardetbase alla tua distribuzione Linux) come suggerito da dotancohen.