为什么VIM在使用setlocal时会更改所有缓冲区的编码?

时间:2013-06-05 13:44:19

标签: vim

当我在VIM上使用setlocal encoding更改缓冲区编码时,VIM会更改所有缓冲区的编码。它真的很烦人,因为我正在编辑不同编码的文件,而且我一直在腐蚀它们。我通过创建两个缓冲区尝试了它,一个setlocal encoding=latin1,另一个setlocal encoding=utf-8:两个缓冲区的编码总是相同的,它总是我设置的最后一个编码。

setlocal适用于'shiftwidth',例如,问题仅出现在编码选项上。

我试图重新安装VIM的新副本,我尝试了7.2和7.1,我仍然有问题。我已经禁用了我的所有插件,我的vimrc。

我是否会失去理智,认为这是以前的工作方式?你有什么想法可能会导致这种情况吗?

如果这很重要,我在Windows 7上使用VIM。

1 个答案:

答案 0 :(得分:8)

'encoding'是一个全局选项,用于指示Vim如何在内部处理文本,因此您有两次错误。

  1. setlocal不适用于'encoding'等全球选项。

    :help 'option'告诉您'option'的“范围”。

  2. 'encoding'不是您要查找的选项,您需要:set fileencoding=utf-8

  3. 参考:

    :help 'encoding'
    :help 'fileencoding'
    :help 'setlocal'