Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在vim中“自动”将euc kr转换为utf-8?_Vim - Fatal编程技术网

如何在vim中“自动”将euc kr转换为utf-8?

如何在vim中“自动”将euc kr转换为utf-8?,vim,Vim,我知道如何像这样手动转换:map:e++enc=euc kr:set fenc=utf-8:w++enc=utf-8 但是,我想通过在.vimrc文件中写入条件语句来自动转换。 所以,我写了下面的代码,但它不起作用 if ($fileencoding == "euc-kr") ++enc=euc-kr % set fenc=utf-8 endif 出了什么问题以及如何修复?有两个部分: 要允许Vim在:edit上自动检测编码,这样您就不需要指定+

我知道如何像这样手动转换:map:e++enc=euc kr:set fenc=utf-8:w++enc=utf-8

但是,我想通过在.vimrc文件中写入条件语句来自动转换。 所以,我写了下面的代码,但它不起作用

    if ($fileencoding == "euc-kr")
        ++enc=euc-kr %
        set fenc=utf-8
    endif

出了什么问题以及如何修复?

有两个部分:

要允许Vim在:edit上自动检测编码,这样您就不需要指定++enc=euc kr,您必须调整“filencodings”的复数形式!选项,例如:

:set fileencodings=ucs-bom,utf-8,euc-kr
为了将编码保持为UTF-8,以下autocmd将为当前缓冲区调整“fileencoding”信号:

:autocmd BufWritePre * if &l:fileencoding ==# 'euc-kr' | setlocal fileencoding=utf-8 | endif

我不知道为什么,但对我来说,设置fileencodings=ucs bom、utf-8、euc kr和autocmd BufEnter*if&l:fileencoding=='euc kr'|设置本地fileencoding=utf-8 | endif有效。我在autocmd的末尾添加了write。如果您想在文件打开时自动转换,这很好。我的解决方案只会在第一次写入时触发转换。