У меня возникли проблемы несколько раз, потому что vim-кодировка была установлена на latin1 по умолчанию, и я не заметил и предположил, что использует utf-8. Теперь, когда у меня есть, я хотел бы настроить vim так, чтобы он делал все правильно во всех очевидных случаях и использовал utf-8 по умолчанию.
Что я хотел бы избежать:
- Принуждение файла, сохраненного в какой-либо другой кодировке, которая работала бы до того, как мои изменения будут открываться как utf-8, что приведет к тарабарщину.
- Принуждение терминала, который не поддерживает многобайтовые символы (например, Windows XP), чтобы попытаться отобразить их в любом случае, что привело к тарабарщину.
- Взаимодействие с возможностью других программ читать или редактировать файлы (у меня есть (возможно, необоснованное) отвращение к использованию спецификации по умолчанию, потому что я не понимаю, насколько вероятно, что это приведет к запуску других программ.)
- Другие вопросы, о которых я не знаю достаточно, чтобы догадаться (но, надеюсь, вы это делаете!)
Что у меня до сих пор:
if has("multi_byte")
if &termencoding == ""
let &termencoding = &encoding
endif
set encoding=utf-8 " better default than latin1
setglobal fileencoding=utf-8 " change default file encoding when writing new files
"setglobal bomb " use a BOM when writing new files
set fileencodings=ucs-bom,utf-8,latin1 " order to check for encodings when reading files
endif
Это взято и слегка изменено из vim wiki. Я переместил bomb
из setglobal fileencoding
в свой собственный оператор, потому что в противном случае он фактически не работает. Я также прокомментировал эту строку из-за моей неопределенности в отношении спецификаций.
Что я ищу:
- Возможные ошибки, чтобы избежать того, что я пропустил
- Проблемы с существующим кодом
- Ссылки на все, о чем уже говорилось/уже указано
В конечном счете, мне бы хотелось, чтобы это привело к ненужному фрагменту копии/вставки, который установит vim для utf-8 по умолчанию, который будет работать на разных платформах.
РЕДАКТИРОВАТЬ: Я пометил свой собственный ответ так, как принято на данный момент, насколько я могу сказать, он работает нормально и учитывает все, на что он может разумно учитывать. Но он не установлен в камне; если у вас есть какая-либо новая информация, не стесняйтесь отвечать!