为什么fileformats选项不能与vim中的ftplugin文件一起使用?

时间:2019-03-18 13:41:36

标签: windows unix vim vim-plugin

在我的~/vimfiles/vimrc文件中,有以下代码行:

 set fileformats=unix

在我的~\vimfiles\ftplugin\dosbatch.vim文件中,有两行代码:

 setlocal fileformats=dos
 setlocal fileformat=dos

我有一个名为 foo.bat 的文件,它是一个dosbatch文件类型,文件格式是dos;我用vim打开它,屏幕上显示^M个字符,如下所示:

@echo off^M
echo i am line1^M
echo i am line2^M
echo i am line3^M
pause

~\vimfiles\ftplugin\dosbatch.vim文件中,我的两个选项似乎没有生效。为什么?

~\vimfiles\ftplugin\dosbatch.vim文件中option的值是否应覆盖vimrc中的set fileformats=unix配置?

vim以什么顺序读取和执行vimrc文件(即ftplugin文件)?

1 个答案:

答案 0 :(得分:0)

我找到了解决方法,如下修改dosbatch.vim的文件内容:

if !exists("dos_isreload")
    let dos_isreload = 1
    e ++ff=dos   
    setlocal fileformat=dos
    w
endif

原因:当vim加载并执行dosbatch.vim时,vim已将文件内容加载到缓冲区中,并使用了set fileformats=unix生成的文件格式。