我可以重新映射vim的`gf`命令来跟随Yii的路径别名吗?

时间:2012-03-26 15:01:51

标签: php vim yii

我刚学会了vim的gf命令,用于导航到其他文件中引用的文件,例如c includes。我想在Yii php框架中使用它,在这里可以使用自动加载器注册文件,如下所示:

Yii::import('path.to.ClassName', true);

gf上使用ClassName无效,因为它不是真正的文件路径。但是,将它转换为文件路径(path/to/ClassName.php

就很容易了

此外,Yii中还有其他机制利用路径别名,例如开始一个小部件,如下所示:

$this->beginWidget('ext.widgets.widgetName.ClassName');

ext.widgets.widgetName.ClassName是某个地方的别名,可能是protected/extensions/widgets/widgetName/ClassName.php。在这种情况下,别名ext在运行时扩展到其完整路径,因此vim无法知道完整的文件路径。

有没有办法重载/重新映射gf所以在php项目中它可以:

  1. 计算正确的文件路径,然后转到该文件,或者如果找不到文件
  2. 执行ClassName
  3. 的标记查找

1 个答案:

答案 0 :(得分:3)

请参阅:help includeexpr。在那里列出的Java示例可能适合您的目的:

:set includeexpr=substitute(v:fname,'\\.','/','g')

更一般地说,请参阅:help gf,然后按照跳转到控制它的设置(就像我刚刚做的那样:)。