Использование файла плагина типа файла (ftplugin) для изменения типа файла в vim / neovim - PullRequest
0 голосов
/ 16 января 2019

Для автоматизации шага по созданию многоточечных заметок. Я бы хотел, чтобы neovim изменил тип файла в зависимости от содержимого первой строки. Все мои заметки с несколькими уценками начинаются с title Например.

title: Euclidean Distance

В идеале я бы хотел сохранить это в моем файле init.vim (.vimrc), однако neovim не обновляет буфер при чтении / открытии, когда я помещаю следующее в мой ../ftplugin/txt.vim файл.

" Change the file type to markdown
if getline(1) =~ '^title:'
   set ft=markdown
endif

Как мне заставить neovim проверить первую строку файла и изменить его тип или хотя бы изменить его синтаксис. Thx.

Я понимаю, что среда выполнения не смотрит все файлы. Единственный способ автоматически проверить тип файла и внести изменения - использовать autocmd и получить файл ftplugin/txt.vim через init.vim (.vimrc)

Ответы [ 2 ]

0 голосов
/ 16 января 2019

Это дует в тот же звуковой сигнал, что и ответ @ PeterRincker, но я думаю, что вы должны следовать :help new-filetype-scripts как описанию (, если ваш тип файла может быть обнаружен только путем проверки содержимого файл ) идеально подходит для вашего варианта использования.

С этим вы помещаете следующее содержимое в ~/.vim/scripts.vim:

if did_filetype()   " filetype already set..
    finish      " ..don't do these checks
endif
if getline(1) =~ '^title:'
    setfiletype markdown
endif
0 голосов
/ 16 января 2019

Согласно :h new-filetype части B вы можете сделать что-то вроде следующего:

augroup txt_to_markdown
    autocmd!
    autocmd BufRead * if &filetype == 'text && getline(1) =~ '^title:' | set filetype=markdown | endif
augroup END
...