В вашем vimrc:
autocmd BufRead,BufNewFile *.scss.erb setlocal filetype=scss.eruby
(см. :help ftdetect
, раздел 2).
EDIT
Чтобы установить тип файла dyanamically для нескольких расширений, мне кажется, это работает:
autocmd BufRead,BufNewFile *.*.*
\ sil exe "setlocal filetype=" . substitute(expand("%"),"^[^.]*\.","",1)
Команда substitute
создает filtype, просто удаляя весь текст из имени файла перед первым .
. Там может быть более изощренный способ ...
ИЗМЕНИТЬ СНОВА
Вот еще одна попытка. MultiExtensionFiletype()
- это функция, которая использует тип файла по умолчанию для последней части расширения и ставит перед ним префикс первой части расширения (то есть части, расположенной между точками).
function MultiExtensionFiletype()
let ft_default=&filetype
let ft_prefix=substitute(matchstr(expand('%'),'\..\+\.'),'\.','','g')
sil exe "set filetype=" . ft_prefix . "." . ft_default
endfunction
Функция должна вызываться для события BufReadPost
, поэтому начальный тип файла устанавливается путем игнорирования нескольких расширений.
autocmd BufReadPost *.*.* call MultiExtensionFiletype()
Надеюсь, этот ответ сходится к чему-то полезному!