我用Emacs写了7年的C++代码。4年前,当我换工作时,我转而使用IntelliJIDEA进行Java开发。毫无疑问,我在IntelliJIDEA上写代码比在Emacs上写代码更有效率。看起来80%的导航代码是真正由导航生成的,只有20%是实际编写的结果。IntelliJIDEA的真正亮点是导航到代码库。例如,假设您要向现有类添加功能。即使你熟悉那个类,你仍然需要检查新代码放在哪里。您需要添加新的声明吗?还有哪些其他类正在使用您现在正在修改的方法?这些都需要查看现有代码。即使在您编写代码时也有很多导航,您要使用的方法的名称是什么?参数的顺序是什么-首先是字符串,然后是整数,还是其他?枚举的可能值有哪些?文件中存在一些导航,我在文件中最常用的操作是:跳转到文件的顶部或底部,转到一行的开头或结尾,选择文本,剪切,复制,粘贴,搜索向前和向后,注释和取消注释代码。Emacs和IntelliJIDEA都对这些操作有很好的命令和快捷键支持。然而,在文件之间导航时,IntelliJIDEA有很大的优势。最有用的命令之一是Ctrl+B(转到声明),顾名思义,它可以让您转到变量、方法或类的声明,即使它们位于另一个文件中。Ctrl+Alt+左键单击返回上一级,我一直使用它并且经常在跳几级后回到我开始的地方。另一个相关的导航命令是Ctrl+Alt+B(转到定义)。在一个接口的方法名上使用这个命令,你会得到一个弹出列表,显示这个方法的所有实现,然后你可以选择你需要去的那个,(如果只有一个实现,你可以直接去哪里)。重载方法也是如此。与此相反的是Ctrl+U(转到父方法或父类)。如果插入符号位于接口函数的实现处(方法名称左侧的一个小接口符号),则此命令会将您带到接口本身。当我想查看所有使用方法或变量的地方时,我使用Ctrl+Alt+F7(显示用法)。此命令会弹出所有用法的列表,您可以轻松切换到任何一种。如果要查找类,我使用Ctrl+N(转到类),它允许您使用大写字母和*通配符搜索类名。我也经常使用ctrl+E。他会弹出一个窗口,其中包含最近最常用的15个文件(最常用的在顶部)。你只需要向下选择你想要的那个然后按回车键去它。另一个有用的命令是Ctrl+P(参数信息),在方法和构造函数的参数处使用它可以得到一个显示参数名称和类型的弹出窗口。在Emacs中,这不是导航,因为您必须转到方法或构造函数的定义才能找到此信息。以上所有命令都非常节省时间。在Emacs中,你需要自己去文件中找到你需要的东西。而在IntelliJIDEA中它是自动的。事实上,我注意到在我使用C++和Emacs的日子里,我定义的类往往比在Java中更大,方法更少,而且更长。我认为一个原因是,当所有内容都在同一个文件中时,Emacs导航更容易,但对于导航功能庞大的IntelliJIDEA来说,功能分散在多个文件中并没有太大关系。其他优势除了导航,IntelliJIDEA还有很多方面的优势。虽然这两种环境都有语法高亮显示,但IntelliJIDEA在其之上添加了一个新的有用功能。静态方法和变量以斜体显示,未使用的变量或方法显示为灰色。当然,IntelliJIDEA会将您键入的任何语法错误标记为红色。无需编译程序来检查错误-它会实时为您完成。IntelliJIDEA在实际编码时也有一些非常有用的功能。首先是名称的自动补全。输入变量名或方法名的几个字母,按Ctrl+空格键,名称就完成了。或在点后按Ctrl+Space可查看对象的可用方法。根据IntelliJIDEA使用统计,另一个功能是我使用最多的一个功能,那就是自动选择语法。当你反复按Ctrl+W时,他选择的代码会越来越大。例如,它会选择一个方法名,然后是一个表达式,然后是整个语句,最后是整个代码块。这对于搜索、缩进和注释代码很有用。当然,也有重命名支持。在Emacs中,如果重命名方法名称,则需要进行查找和替换。但是每次替换时,我都必须检查以确保我没有意外更改不应该更改的内容。如果该方法是公共的,我必须找到它在其他类中出现的位置。在IntellJIDEA中,这就变成了一件很容易的事情。只需选择方法名称,按Ctrl+F6,输入新名称,然后按Enter。所有文件中出现的所有方法名称都将被替换。对IDE毫无根据的担忧我经常看到评论说如果你使用IDE,你必须经常使用鼠标和菜单。这是完全错误的。我喜欢在所有程序中使用快捷键,并尽量使用鼠标。IntelliJIDEA对所有命令都有强大的快捷键绑定,很容易添加新的或修改现有的命令。所以需要使用鼠标和菜单的情况并不多。我上面提到的所有命令都可以使用快捷键访问。另一个毫无根据的担忧是您只能执行IDE菜单中列出的操作。这也是一个站不住脚的观点。就我而言,我所做的正是我在emacs中所做的,即编写和编辑代码。唯一的区别是IntelliJIDEA更快更准确。还有一种普遍的恐惧,就是你会被迫进入IDE的“封闭环境”。好吧,没有什么能阻止您在需要时使用其他工具。源代码树一直在那里。退出IDE,使用您需要的任何工具,然后返回。例如,有时我需要在多个IntelliJIDEA项目中使用grep。在这些情况下,我使用带有适当正则表达式的grep。没什么大不了。***,我还看到一个说法,IDE到处添加配置和元数据文件。在IntelliJIDEA中,目录结构的根目录下只增加了3个工程文件。就是这样。非常不起眼。你不知道你错过了什么。一件非常有趣的事情是,在我切换到IntelliJIDEA之前,我真的很喜欢使用Emacs。我学到了很多快捷方式,并且非常擅长编辑。我也很擅长在目录结构中使用grep、find和其他Unix命令,所以我不觉得我缺少一个工具。快速说明:Unix命令行工具的最佳来源是UnixPowerTools。当我开始使用Symsoft时,几乎所有开发人员都在使用IntelliJIDEA。都是自然试过的。我很快发现我可以用它做什么,并且再也没有回头。事实上,一旦我意识到它可以做一些很酷的事情,我就坚持要向我的前同事展示它。每当我和他们共进午餐时,我都会把他们带到我的办公室。向他们展示一些IntelliJIDEA技巧,眼见为实。但是一个好的编辑器总是有自己的空间一个好的文本编辑器总有一些有用的东西。尽管我不会在Emacs中编写java,但我几乎每天都使用它。它是我编辑文本文件的选择,我偶尔也会用它来编写bash和ruby??脚本。然而,就在前几天,我的一位同事提出了文本编辑器的话题。他提到他开始学习vim,并且本着确保我知道自己缺少什么的精神,我也会尝试一下。所以在一段时间内,我将使用Vim而不是Emacs。让我们看看结果如何。原文链接:henrikwarne翻译:伯乐在线-hahakaka翻译链接:http://blog.jobbole.com/62217/
