是否有VIM插件可以使驼鹿属性在tag_list中显示?
题
我正在编辑使用驼鹿的包装,我想知道是否有用于在标签列表中显示驼鹿属性的插件。
例如,在以下代码中,属性 options
不在tag_list中出现,而是 print_out_site
做:
use Moose;
use MooseX::AttributeHelpers;
...
has 'options' => (
metaclass => 'Collection::Hash',
isa => 'HashRef[Str]',
is => 'ro',
provides => {
exists => 'exists',
get => 'get',
set => 'set',
},
);
...
sub print_out_site {
my $self = shift;
my $key = shift;
$self->fasta_out_fh->print(">", $key, "\n");
$self->fasta_out_fh->print($self->sites->{$key}, "\n");
}
解决方案
添加行
--regex-perl=/has '(.*)' => \(/\1/a,attribute,moose attributes/
到/.ctags,它应该显示。您可能需要调整正则表达式,以避免其他文件中的虚假匹配或为其他文件中的属性声明提供不同的格式。
这扩展了CTAG,因此在解析Perl文件时,它会根据正则表达式检测另一种类型的标签。
然后,您需要通过将其添加到VIMRC文件:
let tlist_perl_settings='perl;c:constant;l:label;p:package;s:subroutine;a:attribute'
其他提示
Geoff,我尝试了您的代码,但使用您使用的语法对我不起作用。这可能是版本问题吗?我正在使用5.8版5.8版。
我还修改了正则态度,因为引号是可选的,您可能需要允许(但没有别的)关键字的空间(但没有其他)。
这是对我有用的原因。我创建了一个$ home/.ctags文件(尚未有一个文件,否则只添加到它),并使用以下行:
--regex-perl=/^\s*has\s+['"]?([0-9a-zA-Z_]+)/\1/a,attribute/
然后按照您的建议添加。
let tlist_perl_settings='perl;c:constant;l:label;p:package;s:subroutine;a:attribute'
现在,它在驼鹿模块中列出了我的属性。
此外,我发现还有有关父母类,角色和使用的模块显示在标签列表中的信息很有用,因此这是我的完整$ home/.ctags文件:
--regex-perl=/^\s*has\s+['"]?([0-9a-zA-Z_]+)/\1/a,attribute/
--regex-perl=/^\s*with\s+(['"])(.+)\1/\2/r,role/
--regex-perl=/^\s*extends\s+(['"])(.+)\1/\2/e,extends/
--regex-perl=/^\s*use\s+([^ ;]+)/\1/u,use/
这就是我在.vimrc中所拥有的(您可以通过更改tlist_par_settings中的顺序来更改标签列表中的标签顺序):
let tlist_perl_settings='perl;u:use;p:package;r:role;e:extends;c:constant;a:attribute;s:subroutine;l:label'
let Tlist_Show_One_File = 1
由于还有其他内容,我发现使用TLIST_SHOW_ONE_FILE选项很有用,这迫使标签列表仅显示当前选择的文件的标签。
要暂时隐藏一些标签,您可以随时将光标移至标签名称,并点击“ ZC”(和“ ZO”以重新打开)。
不隶属于 StackOverflow