Perl VIM是一个功能齐全的可扩展IDE,适用于任何语言

Perl VIM是一个功能齐全的可扩展IDE,适用于任何语言,perl,vim,Perl,Vim,您好,我想掌握VIM作为我的主要IDE。我知道有很多插件等,但我有一个问题:VIM是否能够理解编写代码的特定语言(以防我不使用我的语言的插件)?我指的是一些规则,我可以定义,然后使用,例如自动完成,重构,折叠等。例如,考虑下面两个Perl代码,其中我想重构变量。在第一个示例中,变量的名称相同,但一个是标量,另一个是数组和哈希,在第二个示例中,在另一个范围(循环等)中使用了之前定义的相同名称的变量。因此,使用简单的文本匹配进行重构并不是一种优雅的方式: 第一个示例: my @same_name;

您好,我想掌握VIM作为我的主要IDE。我知道有很多插件等,但我有一个问题:VIM是否能够理解编写代码的特定语言(以防我不使用我的语言的插件)?我指的是一些规则,我可以定义,然后使用,例如自动完成,重构,折叠等。例如,考虑下面两个Perl代码,其中我想重构变量。在第一个示例中,变量的名称相同,但一个是标量,另一个是数组和哈希,在第二个示例中,在另一个范围(循环等)中使用了之前定义的相同名称的变量。因此,使用简单的文本匹配进行重构并不是一种优雅的方式:

第一个示例:

my @same_name;
my $same_name; # How to refactor this variable without affecting all other variables?
my %same_name;

$same_name[0]       = 5;
$same_name{"key"}   = 5;
$same_name          = 5;
my @array;
my $already_existing_variable; # How to refactor this variable

foreach my $already_existing_variable (@array){
    print $already_existing_variable; # Without affecting this variable
}



print $already_existing_variable; # Variable that should be also refactorized
第二个示例:

my @same_name;
my $same_name; # How to refactor this variable without affecting all other variables?
my %same_name;

$same_name[0]       = 5;
$same_name{"key"}   = 5;
$same_name          = 5;
my @array;
my $already_existing_variable; # How to refactor this variable

foreach my $already_existing_variable (@array){
    print $already_existing_variable; # Without affecting this variable
}



print $already_existing_variable; # Variable that should be also refactorized
或者,当我键入
$arr
{并点击这里的TAB}时,它将自动扩展到
$array[
?对于这个VIM,我必须知道,当我在用
@
声明的变量之前添加
$
时,我想要访问数组元素。
另一个例子是:如何使用例如
开始
结束
关键字来折叠代码?这些都是非常琐碎的例子,但我想你明白了。我认为编写自己的编译器或其他东西也是类似的任务。谢谢。

当第一句话是
“您好,我想掌握VIM作为我的主要IDE。”

Vim不是一个IDE。Vim是一个文本编辑器。(您可以使用google了解更多)


如果您觉得IDE提供的功能(重构、更智能的自动完成…)比vim提供的功能(快速移动、永不离开主行、可编程编辑器…)更重要然后您应该使用IDE,或者使用带有vim插件的IDE。通常,如果您想将IDE功能与vim功能混合使用,可以使用IDE插件,而不是相反的方式(有一些例外情况,例如eclim)。

我几乎整天都在用vim和perl脚本:

重命名变量
App::EditorTools
提供了重命名变量的函数,如
Padre

  • 安装App::EditorTool
    $cpanm App::EditorTools
  • 安装vim插件
    $editortools安装vim
  • 将光标移动到vim中的变量名称上
  • 键入
    \pL
  • 我不知道为什么它在第二个示例中解析了错误的作用域,但是您可以暂时用lambda包装
    foreach
    brock,并首先在代码块内重命名变量

    sub {
    foreach my $already_existing_variable (@array){
        print $already_existing_variable; # Without affecting this variable
    }
    }->();
    
    重新格式化脚本缩进
    Perl::Tidy
    perltidy
    命令行工具来格式化脚本

  • 安装Perl::Tidy
    $cpanm Perl::Tidy
  • 根据您的喜好创建
    ~/.perltidyrc
    。如下所示:

    -pbp -pt=2 -sbt=2 -bt=2 -bbt=2 -行政长官 -nbbc

  • ~/.vimrc

    au文件类型perl setl ep=perltidy

  • 在脚本中键入
    gg=G

  • 语法检查 vim的perl内置编译器插件做得很好

  • ~/.vimrc

    au文件类型perl:编译器perl

  • 键入
    :在正常模式下生成

  • 键入
    :copen
    打开快速修复窗口
  • 如果您不希望快速修复列表中出现
    警告
    ,可以取消设置该警告的标志

    let g:perl_compiler_force_warnings = 0
    
    $PERL5LIB
    在调用
    :make
    时也很重要,您可以在其中指定特定的目录

    let &l:path = './lib,./blib/lib,./blib/arch,' . &l:path
    let $PERL5LIB = substitute(&l:path, ',', ':', 'g')
    
    完成 vim有现成的完善工具。请参阅
    :help comple generic

  • 在插入模式下键入
    $ar
    ,然后按
    CTRL-N

  • 您可能也对ctags感兴趣。

    我希望master VIM不仅是perl的主编辑器,也是其他编程语言和文本编辑的主编辑器。基本上,我正在搜索一些东西,编辑器或IDE,可以随意调用,这是高度可定制和可配置的,就我所知VIM是高度可配置的。什么我只想掌握一个IDE/编辑器并在这里编写代码,如果某些语言功能不受支持或我提到的某些功能将丢失,我将在我已经知道的IDE/编辑器中“编写”它。这就是我正在尝试实现的。有些事情需要花费很长时间来编写脚本我建议只使用vim编写代码(因为vim是为数不多的易于编写脚本的编辑器之一,而且您已经开始使用vim),并处理IDE中的某些功能无法完全可用的事实。对于重构,我建议在替换时使用
    gc
    标志(
    :%s/someName/otherName/gc
    )这将在替换之前提示您。要自动完成,只需使用内置的自动完成功能,我认为这很好。谢谢您提供的提示。您说“几乎所有的日子“那么您还使用了哪些IDE/编辑器以及为什么?有时我使用Emacs和Padre,但很少使用。只有perl可以解析perl。将它们视为纯文本比IDE有更好的前景。”。