В чем разница между этими двумя командами?
set encoding=utf-8
set fileencoding=utf-8
Нужно ли мне устанавливать оба, когда я хочу использовать utf-8?
Кроме того, мне нужно установить кодирование файлов с помощью set
или setglobal
?
В чем разница между этими двумя командами?
set encoding=utf-8
set fileencoding=utf-8
Нужно ли мне устанавливать оба, когда я хочу использовать utf-8?
Кроме того, мне нужно установить кодирование файлов с помощью set
или setglobal
?
Ответы:
В первом случае
set encoding=utf-8
вы измените кодировку вывода, отображаемую в терминале.Во втором случае
set fileencoding=utf-8
вы измените кодировку вывода записываемого файла .
Как заявил @Dennis, вы можете установить их оба в своем ~ / .vimrc, если вы всегда хотите работать utf-8
.
Из вики VIM о работе с юникодом
" encoding
устанавливает, как vim должен представлять символы внутри . Utf-8 необходим для большинства разновидностей Unicode."
" fileencoding
устанавливает кодировку для конкретного файла (локально в буфер);: setglobal устанавливает значение по умолчанию. Также можно использовать пустое значение: оно по умолчанию такое же, как 'кодировка'. Или вы можете захотеть установить одну из кодировок ucs, Это может сделать один и тот же файл на диске больше или меньше в зависимости от вашего конкретного сочетания символов. Кроме того, IIUC, utf-8 всегда имеет обратный порядок байтов (сначала старший бит), а ucs может быть прямым порядком байтов или прямым порядком байтов, поэтому, если вы используйте его, вам, вероятно, понадобится установить «бомбу» (см. ниже) ».
vim -c "set encoding=utf-8" file.ext
.
Вы можете установить переменную 'fileencodings' в вашем .vimrc.
Это список кодировок символов, учитываемых при запуске редактирования существующего файла. При чтении файла Vim пытается использовать первую упомянутую кодировку символов. Если обнаружена ошибка, выполняется попытка следующей в списке. Когда обнаруживается работающая кодировка, устанавливается "fileencoding". Если все не удается, 'fileencoding' устанавливается в пустую строку, что означает, что используется значение 'encoding'.
Увидеть :help filencodings
Если вы часто работаете, например, с cp1252, вы можете добавить его туда:
set fileencodings=ucs-bom,utf-8,cp1252,default,latin9