gpt4 book ai didi

vim - 如果文件具有多个扩展名,则自动在 `filetype`中设置多种文件类型

转载 作者:行者123 更新时间:2023-12-04 16:35:59 35 4
gpt4 key购买 nike

我经常在Ruby on Rails上进行开发。随着最近在RoR 3中添加了Tilt,我们有了诸如.scss.erb的文件扩展名。在这种情况下,如何自动制作filetype = scss.erb,对于具有多个扩展名的每个文件,该如何设置相同?

编辑:在这种情况下,它应该是scss.eruby,因为erb扩展名默认为eruby文件类型。

编辑:如果不清楚,我正在寻找一种方法来使具有多个扩展名的所有文件动态地工作。例如,文件foo.js.html的文件类型应为js.html

再次编辑:Goulash王子的答案没有采用特定扩展名的默认文件类型。

最佳答案

在您的vimrc中:

autocmd BufRead,BufNewFile *.scss.erb setlocal filetype=scss.eruby

(请参见 :help ftdetect,第2部分)。

编辑

为多个扩展名动态设置文件类型,这似乎对我有用:
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()

希望这个答案正在汇聚一些有用的东西!

关于vim - 如果文件具有多个扩展名,则自动在 `filetype`中设置多种文件类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8413781/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com