保存保留BOM表的文件

时间:2019-01-31 22:10:30

标签: vim

我正在尝试保存保留BOM的UTF-8文件。由于某种原因,行setglobal bomb对我不起作用:该文件另存为普通UTF-8。

以下是有关我的Vim的技术详细信息:

    Windows 7上的
  • gvim 8.1.1,未添加插件或自定义补丁
  • :echo has('multi_byte')显示1

这是我的_vimrc:

if has('multi_byte')
  if &termencoding == ''
    let &termencoding = &encoding
  endif
  set encoding=utf-8
  setglobal fileencoding=utf-8
  setglobal bomb " Doesn't work?
endif

set laststatus=2
if has("statusline")
  set statusline=%<%f\ %h%m%r%=%{\"[\".(&fenc==\"\"?&enc:&fenc).((exists(\"+bomb\")\ &&\ &bomb)?\",B\":\"\").\"]\ \"}%k\ %-14.(%l,%c%V%)\ %P
endif

编辑:

嗯,正如我后来发现的那样,它看起来像个错误。重现步骤:

  1. 打开Vim。请注意,状态行中没有BOM指示器。
  2. 写点东西(foo
  3. 运行:enew!
  4. 请注意,新文件具有BOM指示器。

所以,我的问题是:如何在Vim启动时立即启用BOM(即在第1步)?

1 个答案:

答案 0 :(得分:3)

来自:help 'bomb'

  

本地缓冲

来自:help :setglobal

        Command          global value       local value
      :set option=value      set                set
 :setlocal option=value       -                 set
:setglobal option=value      set                 -

因此,的的错误:你的setglobal bomb设置全局选项,但的的设置你的起始缓冲的本地选项。将setglobal bomb更改为set bomb,以同时影响您的启动缓冲区。