gpt4 book ai didi

perl - 为什么vim不能正确缩进我的Perl代码?

转载 作者:行者123 更新时间:2023-12-04 13:24:25 24 4
gpt4 key购买 nike

我在Perl中有一个子程序,应该像这样缩进:

sub GetFiles 
{
my $pwd = shift;
my @input = @_;
my @returned;

my @DirectoryContent = &GetContentInformation(@input);

foreach (@DirectoryContent)
{
my %current = %{$_};

if ($current{'info'} =~ /<DIR>/)
{
my $RecurseDir = &GetRecurseDir($pwd, \%current);
push(@returned, &GetFiles($RecurseDir,
&GetDirectoryContents($RecurseDir)));
}
else
{
# clean up the data
my $size = $current{'info'};
# filesize will be in number of bytes
# remove file separators
#$size =~ s/,//g;
my $extension = &GetFileExtension($current{'name'});
delete($current{'info'});
$current{'size'} = $size;
$current{'extension'} = $extension;
# push(@returned, \%current);
}
}
@returned;
}

但是,当我在子例程块的起始括号上按 =%(是的, cindent处于打开状态)时,它会像这样缩进:
sub GetFiles 
{
my $pwd = shift;
my @input = @_;
my @returned;

my @DirectoryContent = &GetContentInformation(@input);

foreach (@DirectoryContent)
{
my %current = %{$_};

if ($current{'info'} =~ /<DIR>/)
{
my $RecurseDir = &GetRecurseDir($pwd, \%current);
push(@returned, &GetFiles($RecurseDir, &GetDirectoryContents($RecurseDir)));
}
else
{
# clean up the data
my $size = $current{'info'};
# filesize will be in number of bytes
# remove file separators
#$size =~ s/,//g;
my $extension = &GetFileExtension($current{'name'});
delete($current{'info'});
$current{'size'} = $size;
$current{'extension'} = $extension;
# push(@returned, \%current);
}
}
@returned;
}

为什么这样做呢?我该如何解决?

编辑:应该注意,我在Windows上使用gvim 7.3。

最佳答案

也许这是一个神奇的想法,但是……我曾经有过:

filetype plugin on
filetype indent on

在我的 _vimrc中(在Windows XP上,是自编译的 gvim,各种版本)中,我会在Perl,LaTeX和HTML文件中遇到各种有趣的缩进问题。

我现在有
filetype indent on 
filetype plugin on

一切似乎都是枯燥的。 YMMV。

另外,我强烈推荐 Andy Lester's vim-perl

关于perl - 为什么vim不能正确缩进我的Perl代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7905836/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com