Vim:gf 文件扩展名基于当前文件类型

标签 vim

我正在尝试设置我的 .vimrc所以gf通过尝试打开与当前 FileType 具有相同扩展名的文件,将自动处理缺少文件扩展名的路径。

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

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

哪里<exts>是与当前 <filetype> 关联的所有文件扩展名的列表.

例如,我的 filetype.vim将文件类型“javascript”定义为名称为 *.js 的文件, *.javascript , *.es , *.jsx , 和 *.json ,所以每当我编辑 javascript 缓冲区时,如果光标位于路径 ./index 上, 正在运行 gf应该尝试打开./index.js .如果该文件不存在,那么它应该尝试 ./index.javascript , 等等。如果文件类型是python,则应该尝试./index.py , ./index.pyw , 等等。

如果我只是为每个 FileType 运行它,我很确定上面的 autocmd 应该会产生预期的行为,但我不确定如何做到这一点。

最佳答案

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

就像是:

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

关于Vim:gf 文件扩展名基于当前文件类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33093491/

相关文章:

ruby-on-rails - 如何使用 Rails.vim 和 spork?

Vim <C-R><C-W> 忽略该行的当前内容

vim 智能标签

Vim:t_Co=256 和 term=xterm-256color 与 TMUX 的区别

python - "scripting"vim 使用更细粒度的 python

vim - 在 GVIM 中,我们如何在保持先前搜索突出显示的同时进行搜索和突出显示

Vim 将诊断消息打印到消息缓冲区并阻止 "press Enter to continue"提示

vim - 如何在 git bash commit 中保存退出 vim

linux - 为什么 vim 的 d 运算符行为不端?

vim - 给定文件扩展名,如何在vim中定义默认初始文件?