VIM是适用于任何语言的全功能可扩展IDE

时间:2014-08-24 14:35:29

标签: perl vim

您好我想将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

或者,如果我在$arr {并在此处点击TAB}时如何实现这一目标,它会自动延伸到$array[?为此,VIM必须知道当我在$声明的变量之前添加@时,我想访问数组元素。 另一个例子是:如何使用例如折叠码来折叠代码。 BEGINEND个关键字?那些是琐碎的小例子,但我认为你明白了。我认为编写自己的编译器或其他东西是类似的任务。谢谢。

2 个答案:

答案 0 :(得分:4)

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

重命名变量

App::EditorTools为您提供了重命名Padre等变量的功能。

  1. 安装App :: EditorTool $ cpanm App::EditorTools
  2. 安装vim插件$ editortools install-vim
  3. 将光标移动到vim中的变量名称。
  4. 输入\pL
  5. 我不确定为什么它会在第二个示例中解析错误的范围,但您可以暂时将foreach brock用lambda包装并首先在代码块中重命名变量。

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

    重新格式化脚本缩进

    Perl::Tidyperltidy命令行工具来格式化您的脚本。

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

      -pbp -pt = 2 -sbt = 2 -bt = 2 -bbt = 2 -CE -nbbc

    3. equalprg

      中将perltidy设为~/.vimrc

      au FileType perl setl ep = perltidy

    4. 在您的脚本中输入gg=G

    5. 语法检查

      vim的内置编译器插件非常适合。

      1. :compiler

        中将perl设为~/.vimrc

        au FileType perl:compiler perl

      2. 在正常模式下输入:make

      3. 键入:copen以打开quickfix窗口
      4. 如果您不想在快速修复程序列表中使用warnings,则可以取消设置该标记。

        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

        1. 在插入模式下输入$ar,然后按CTRL-N
        2. 您可能也对ctags感兴趣。

答案 1 :(得分:0)

当第一句话为"Hello I would like to master VIM as my primary IDE."

时,我已经可以说出错了

Vim不是IDE。 Vim是一个文本编辑器。 (您可以使用谷歌查找更多信息)

如果你觉得IDE提供的功能(重构,更智能的自动完成......)比vim提供的功能更重要(快速移动,永远不要把你的手从主行,可编程编辑器...... )然后你应该使用IDE或带有vim插件的IDE。通常,如果要将IDE功能与vim功能混合使用,可以使用IDE的插件,而不是相反(有一些例外,例如eclim)。