【问题标题】:Vim: gf with file extension based on current FileTypeVim: gf 文件扩展名基于当前 FileType
【发布时间】:2015-10-13 03:12:29
【问题描述】:

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

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

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

其中&lt;exts&gt; 是与当前&lt;filetype&gt; 关联的所有文件扩展名的列表。

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

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

【问题讨论】:

  • 你写的自动命令有什么问题?
  • 你把它打包成 vim 插件了吗? ....“我将与自动命令结合使用,将当前文件扩展名添加到 suffixesadd”——听起来是个好主意。
  • @alexanderbird 我主要使用它来跳转到 NodeJs require 语句中的文件,并意识到匹配文件类型的 every 扩展名在实践中并不是那么有用。现在我只使用这个自动命令来添加当前文件扩展名:autocmd BufRead * execute 'setl suffixesadd+=.' . expand('%:e')

标签: vim


【解决方案1】:

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

类似:

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

【讨论】:

  • 这令人失望。感谢您的回答,我将它与将当前文件扩展名添加到 suffixesadd 的 autocmd 结合使用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-08
  • 2019-11-19
  • 1970-01-01
  • 1970-01-01
  • 2017-11-23
  • 2020-07-30
相关资源
最近更新 更多