Vim:基于当前FileType的文件扩展名为gf

时间:2015-10-13 03:12:29

标签: vim

我尝试设置.vimrc,因此gf会自动处理缺少文件扩展名的路径,尝试打开与当前FileType相同扩展名的文件。< / p>

换句话说,我想要这样的东西:

autocmd FileType <filetype> setl suffixesadd+=<exts>

其中<exts>是与当前<filetype>相关联的所有文件扩展名的列表。

例如,我的filetype.vim定义了FileType&#34; javascript&#34;作为名称为*.js*.javascript*.es*.jsx*.json的文件,因此每当我编辑javascript缓冲区时,如果光标位于路径./index,正在运行gf应尝试打开./index.js。如果该文件不存在,则应尝试./index.javascript,依此类推。如果文件类型是python,则应尝试./index.py./index.pyw

我非常确定上面的autocmd应该产生预期的行为,如果我只为每个FileType运行它,但我不知道该怎么做。

1 个答案:

答案 0 :(得分:6)

这些默认扩展名不会以有用的格式存储在任何位置,因此您需要构建自己的列表并循环遍历它以运行自动命令。

类似的东西:

augroup suffixes
    autocmd!

    let associations = [
                \["javascript", ".js,.javascript,.es,.esx,.json"],
                \["python", ".py,.pyw"]
                \]

    for ft in associations
        execute "autocmd FileType " . ft[0] . " setlocal suffixesadd=" . ft[1]
    endfor
augroup END