Почему опция fileformats не работает с файлом ftplugin в vim? - PullRequest
0 голосов
/ 18 марта 2019

В моем файле ~/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 не должны переопределять конфигурацию set fileformats=unix в vimrc?

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

1 Ответ

0 голосов
/ 20 марта 2019

Я нашел решение. Измените содержимое файла 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.

...