Définissez le codage et le codage de fichier sur utf-8 dans Vim


95

Quelle est la différence entre ces deux commandes?

  • set encoding=utf-8
  • set fileencoding=utf-8

Dois-je définir les deux lorsque je veux utiliser utf-8?

Dois-je également définir le codage de fichier avec setou setglobal?


Notez qu'il est plus sûr de définir l'encodage dans votre LOCALE au lieu de le forcer dans Vim, au cas où vous modifieriez un fichier non-unicode. Vous obtiendrez le même résultat que celui par défaut de LOCALE et vous ne gâcherez aucun personnage étranger s'il est rencontré.
timss

Réponses:


89

TL; DR

Dans le premier cas avec set encoding=utf-8, vous allez modifier l'encodage de sortie affiché dans le terminal.

Dans le second cas set fileencoding=utf-8, vous modifierez l'encodage de sortie du fichier qui est écrit .

Comme indiqué par @Dennis, vous pouvez les définir tous les deux dans votre ~ / .vimrc si vous souhaitez toujours travailler utf-8.

Plus de détails

Depuis le wiki de VIM sur l'utilisation de l'Unicode

" encodingdéfinit comment vim doit représenter les caractères en interne . Utf-8 est nécessaire pour la plupart des versions d'Unicode."

" fileencodingdéfinit l' encodage pour un fichier particulier (local vers buffer);: setglobal définit la valeur par défaut. Une valeur vide peut également être utilisée: elle est par défaut identique à 'encoding'. Ou vous pouvez définir l'un des encodages ucs, Cela peut rendre le même fichier disque plus gros ou plus petit en fonction de votre combinaison particulière de caractères. De plus, IIUC, utf-8 est toujours big-endian (le bit fort en premier) tandis que ucs peut être big-endian ou little-endian, donc si vous utilisez-le, vous aurez probablement besoin de définir "bombe" (voir ci-dessous). "


3
Désolé je ne comprends pas. Que fait le codage de fichiers plus exactement?
Kiraly Zoltan

25
Dans le premier cas, vous allez modifier l'encodage de sortie affiché dans le terminal. Dans le second cas, vous modifierez l'encodage de sortie du fichier écrit.
Adrien Lacroix

1
+1 Pour une réponse courte et douce, au lieu de simplement répéter la documentation officielle! :)
425nesp

Si nécessaire ad-hoc directement à partir de la ligne de commande 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.

Vous pouvez également définir les deux dans votre ~/.vimrcsi vous souhaitez toujours travailler avec utf-8.


0

Vous pouvez définir la variable 'fileencodings' dans votre .vimrc.

Il s'agit d'une liste d'encodages de caractères pris en compte lors du démarrage de la modification d'un fichier existant. Lorsqu'un fichier est lu, Vim essaie d'utiliser le premier encodage de caractères mentionné. Si une erreur est détectée, la suivante de la liste est essayée. Lorsqu'un encodage fonctionne, 'fileencoding' est défini sur celui-ci. Si tout échoue, 'fileencoding' est défini sur une chaîne vide, ce qui signifie que la valeur de 'encoding' est utilisée.

Voir :help filencodings

Si vous travaillez souvent avec par exemple cp1252, vous pouvez l'ajouter ici:

set fileencodings=ucs-bom,utf-8,cp1252,default,latin9
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.