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

标签 perl vim indentation vim-perl

我在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/

相关文章:

search - 当前文件中搜索词出现的可选列表。

vim - 在 Vim 中,如何为代码块进行可视行选择?

python - 如何打印完整的金字塔?

regex - Perl 正则表达式 |如何从文件中排除单词

java - 序列化文本文件的新行丢失

macos - 如何从系统剪贴板粘贴到控制台 Vim?

c++ - 构造函数中初始化列表的缩进是错误的

java - 语句标签的缩进检查无法正常工作

arrays - "Perl : Add an Array Element from one Array into another Array"

linux - 从 perl 网络服务器访问用户文件