Встановіть кодування та кодування файлів на utf-8 у Vim


95

Яка різниця між цими двома командами?

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

Чи потрібно встановлювати обидва, коли я хочу використовувати utf-8?

Також мені потрібно встановити кодування файлів за допомогою setабо setglobal?


Зауважте, що безпечніше встановити кодування у вашому LOCALE, а не примушувати його до Vim, якщо ви редагуєте файл, який не використовується унікодом. Ви отримаєте такий самий результат, який буде за замовчуванням для LOCALE, і ви не зіпсуєте жодних іноземних символів, якщо їх зустрінете.
timss

Відповіді:


89

TL; DR

У першому випадку з set encoding=utf-8, ви будете змінювати вихідне кодування, яке відображається в терміналі.

У другому випадку з set fileencoding=utf-8, ви будете змінювати вихідне кодування записаного файлу .

Як зазначає @Dennis, ви можете встановити їх обидва у своєму ~ / .vimrc, якщо завжди хочете працювати utf-8.

Детальніше

З вікі VIM про роботу з unicode

" encodingвстановлює, як vim повинен представляти символи внутрішньо . Utf-8 необхідний для більшості ароматів Unicode."

" fileencodingвстановлює кодування для певного файлу (локальний до буфера);: setglobal встановлює значення за замовчуванням. Також може використовуватися порожнє значення: воно за замовчуванням відповідає тому ж, що і" кодування ". Або ви можете встановити одне з кодувань ucs, Це може зробити той самий файл диска більшим або меншим, залежно від конкретного набору символів. Також, IIUC, utf-8 завжди є великим ендіаном (перший біт), тоді як ucs можуть бути big-endian або little-endian, тому якщо ви використовуйте його, можливо, вам буде потрібно встановити "бомба" (див. нижче). "


3
Вибачте, я не розумію. Що точно робить кодування файлів?
Кіралі Золтан

25
У першому випадку ви зміните кодування виводу, яке відображається в терміналі. У другому випадку ви будете змінювати вихідне кодування записаного файлу.
Адріан Лакруа

1
+1 Коротка та мила відповідь, а не лише повторення офіційної документації! :)
425nesp

Якщо потрібно, спеціальні безпосередньо з командного рядка vim -c "set encoding=utf-8" file.ext.
Ганс Гінзель

87
set encoding=utf-8  " The encoding displayed.
set fileencoding=utf-8  " The encoding written to file.

Ви також можете встановити обидва у своїх, ~/.vimrcякщо завжди хочете працювати з utf-8.


0

Ви можете встановити змінну 'fileencodings' у своєму .vimrc.

Це список кодувань символів, що враховується під час редагування наявного файлу. Коли файл читається, Vim намагається використовувати перше згадане кодування символів. Якщо виявлена ​​помилка, спробується наступна у списку. Коли знайдено кодування, яке працює, на нього встановлюється "fileencoding". Якщо все не вдалося, 'fileencoding' встановлюється порожнім рядком, що означає значення 'кодування'.

Побачити :help filencodings

Якщо ви часто працюєте з, наприклад, cp1252, можете додати його туди:

set fileencodings=ucs-bom,utf-8,cp1252,default,latin9
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.