Почему параметр fileformats не работает с файлом ftplugin в vim?

#windows #unix #vim #vim-plugin

#Windows #unix #vim #vim-плагин

Вопрос:

В моем ~/vimfiles/vimrc файле у меня есть следующая строка кода:

  set fileformats=unix
  

В моем ~vimfilesftplugindosbatch.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
  

Похоже, что мои два параметра в ~vimfilesftplugindosbatch.vim файле не вступают в силу. почему?

Разве значения параметра в ~vimfilesftplugindosbatch.vim файле не должны переопределять set fileformats=unix конфигурацию в vimrc?

В каком порядке vim считывает и выполняет файл vimrc, файл ftplugin?

Ответ №1:

Я нашел решение.Измените содержимое файла dosbatch.vim следующим образом:

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

Причина: Когда vim загружает и выполняет dosbatch.vim, vim загрузил содержимое файла в буфер и использовал fileformate, созданный set fileformats=unix .