Perl VIM是一个功能齐全的可扩展IDE,适用于任何语言
您好,我想掌握VIM作为我的主要IDE。我知道有很多插件等,但我有一个问题:VIM是否能够理解编写代码的特定语言(以防我不使用我的语言的插件)?我指的是一些规则,我可以定义,然后使用,例如自动完成,重构,折叠等。例如,考虑下面两个Perl代码,其中我想重构变量。在第一个示例中,变量的名称相同,但一个是标量,另一个是数组和哈希,在第二个示例中,在另一个范围(循环等)中使用了之前定义的相同名称的变量。因此,使用简单的文本匹配进行重构并不是一种优雅的方式: 第一个示例:Perl VIM是一个功能齐全的可扩展IDE,适用于任何语言,perl,vim,Perl,Vim,您好,我想掌握VIM作为我的主要IDE。我知道有很多插件等,但我有一个问题:VIM是否能够理解编写代码的特定语言(以防我不使用我的语言的插件)?我指的是一些规则,我可以定义,然后使用,例如自动完成,重构,折叠等。例如,考虑下面两个Perl代码,其中我想重构变量。在第一个示例中,变量的名称相同,但一个是标量,另一个是数组和哈希,在第二个示例中,在另一个范围(循环等)中使用了之前定义的相同名称的变量。因此,使用简单的文本匹配进行重构并不是一种优雅的方式: 第一个示例: my @same_name;
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
$cpanm App::EditorTools
$editortools安装vim
\pL
foreach
brock,并首先在代码块内重命名变量
sub {
foreach my $already_existing_variable (@array){
print $already_existing_variable; # Without affecting this variable
}
}->();
重新格式化脚本缩进
Perl::Tidy
有perltidy
命令行工具来格式化脚本
$cpanm Perl::Tidy
~/.perltidyrc
。如下所示:
-pbp
-pt=2
-sbt=2
-bt=2
-bbt=2
-行政长官
-nbbc~/.vimrc
au文件类型perl setl ep=perltidygg=G
~/.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有更好的前景。”。