djh*_*987 6 vim perl 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;
}
Run Code Online (Sandbox Code Playgroud)
但是当我按下=%
(是的,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;
}
Run Code Online (Sandbox Code Playgroud)
为什么这样做?我该如何解决?
编辑:应该注意我在Windows上使用gvim 7.3.
也许这是神奇的想法,但是...我曾经有过:
filetype plugin on
filetype indent on
Run Code Online (Sandbox Code Playgroud)
在我的_vimrc
(在Windows XP上,自编译gvim
,各种版本),我会在Perl,LaTeX和HTML文件中得到各种有趣的缩进问题.
我现在有
filetype indent on
filetype plugin on
Run Code Online (Sandbox Code Playgroud)
而且一切似乎都是笨拙的.因人而异.
另外,我强烈推荐Andy Lester的vim-perl.