习惯IDE开发是一种病,vim如何让你成为一个更好的开发者
我第一次遇到vim是在前一段时间我参加的Linux系统管理员课程中。
当时并没有真正了解Linux。它听起来很花哨。
在这个过程中,讲师经常输入3字命令vim 并编辑一些东西。
“哎呀,看起来很酷”,我想!
所以,决心自己看起来很酷,我回到了家,打开了一个终端,输入了魔法词语,瞧! - 我在vim里面。
所以,我非常希望Hello World 在vim中编写我的第一个txt文件,我开始在键盘上敲击键盘。没有任何事情发生。
一些奇怪的嘟嘟声从无处开始,我感到非常沮丧!
所以,我的目标迅速从输入任何东西转移到退出vim。是的,你可能知道接下来的事情。
一个击键狂暴让我尽我所能退出vim。最后,在与编辑器第一次碰撞失败之后,我非常感谢终端模拟器右上方的X键。
现在,如果你尝试过使用这个故事,听起来应该很熟悉vim。那么,最终你会学习如何退出它,并学习如何输入符号。
但还有更多。无尽的组合键可以让你想知道你在碰到钥匙后做了什么。
如今,它vim 是最受欢迎的文本编辑器。即使一些Windows用户倾向于使用它,尽管它是本地Unix实用程序。
但是有什么意义呢?那里有很多IDE。当他可以安装第一个Javascript IDE谷歌建议的时候,为什么有人会用无尽的vim挫败感染他的生活。
那么,虽然它可能不适合任何项目,但至少在一段时间内坚持使用vim会有一些很大的好处。
最大的一个是用户界面。但是,这篇文章的重点不在于此。关于这个问题可以找到许多文章,也许我会在未来做一篇文章。
今天,我们将探讨vim编辑器较少强调的优点。
治疗IDE疾病
IDE是一个很棒的工具。它为您提供了一些非常酷的功能 - 自动完成,代码模板,代码片段等。
这些东西是不可替代的,特别是对于大型项目。但是它们也可能大大削弱从未使用过其他程序员的技能。原因在于,通过使用这些实用程序,您的写作变得琐碎,因为该函数调用是远离自动完成的一个选项卡。此外,您可能会惊讶于由于这些工具而可能在您的知识中产生的差距。
我就是这样一个例子。由于IDE疾病,我惊讶于我的缺点,有两种情况。
有一次,我在编程课程中当过助理,有一个人在编程基础课程的第一堂课之一中向我求助。他已经用Hello WorldC#程序创建了一个新的VS模板,但他弄糟了最初的C#代码,并没有编译。
所以,他在寻求帮助来解决问题。我试过这样做,但后来我很惊讶,即使我不知道如何编写基本的C#Hello World程序而不依赖于标准模板。最后,我告诉他删除该项目并制作新的项目,以便VS Hello World 为他创建模板。
这对我来说是一个很大的惊喜。我很习惯默认的Visual Studio C#模板,所以我无法自己编写它。
另一个这样的例子是当我试图写一个for循环而不使用自动补全时,我第一次尝试vim。我做不到。我不知道循环声明中的什么地方,因为我一直使用自动完成为我写for循环。
现在,您可能会认为我的编程经验很早就发生了,但您错了。我已经了解了OOP是什么,几种编程语言和一些基本的数据结构。我已经编程了近一年,然而,我无法自己写一个for循环。
使用基本的vim,你没有自动完成和默认模板。这样,我就能够检测到这些缺点并对其进行修改。
更重要的是,被要求自己编写整个函数名称,我才能成为一个非常快速的作家。现在,我感觉键盘是我手中的延续。
这并不意味着我不在我的项目中使用自动完成和模板,但是。我确实使用它们,即使使用vim(当我设置了一些插件)。它们是极大提高生产力的伟大工具。但我相信应该花一些时间在没有这些实用程序的情况下创建项目,以便感受自己编写整个代码的强烈经验。
这肯定会让你成为一个更好的开发者。更重要的是,许多公司使用白板面试来测试他们的候选人。如果您无法在没有自动完成功能的情况下编写hello world程序,您的所有算法知识都无法帮助您在白板上工作。
删除抽象层
使用IDE时,一切都是一键式操作。您可以通过单击来编译,链接和运行您的项目Ctrl-F5。
实际上,这些是三个不同的命令。
有时,您可以在IDE底部找到一个加载栏,并带有状态消息Indexing。
你知道那是什么吗?为什么这样做?
您是否知道为了构建您的项目,IDE使用了一个配置文件,它概述了单个文件如何编译,链接,如何运行测试等?
配置文件的确切应用当然是项目特定的,但可以配置所有这些属性。
如果你不使用IDE,你必须自己编写这个配置文件或者明确地生成它(Makefiles就是C / C ++项目中的例子)。
通过使用IDE,这些细节是隐藏的,当然可以节省时间,但是会让您再次缺乏知识。有些人可能会说,如果你在日常工作中没有遇到这种情况,你就不需要这些知识。
如果汽车修理工只是在工作中更换汽车部件,他们可能会不知道发动机是如何工作的。这是否使他们成为他们的工艺的主人?
但通过使用vim和终端,所有这些错综复杂的东西都不会被隐藏起来,你必须明确地做到这些。这需要更多的时间给学徒,但可以让你探索你的系统的能力。
例如,您是否知道有不同于IDE默认值的编译器选项?
另一件事是,使用这种方法可以使您的项目更便于使用通用工具,而不是特定于IDE的工具。根据我的经验,我遇到的一个问题是一个非常旧的项目,需要将它移植到不同的IDE中。
我必须深入研究VS特定的配置文件,才能对我的项目的构建系统进行反向工程。例如,通过使用Makefile,您可以简单地在任何现代IDE中导入Makefile项目,并将您的项目移植到盒子中。
IDEs的海洋
对于C#,你有Visual Studio。对于Java,有Eclipse和IntelliJ。Python有PyCharm。还有C ++的代码块。
即使你坚持使用单一语言,你仍然有可能在你工作的项目之间切换IDE。
那么为什么这是一个问题?
那么,通过不断地切换工具,你必须通过学习IDE的快捷键和键绑定。许多人甚至不打扰并继续使用鼠标并点击单击。
这意味着你的生产力不会那么高。
另外,在您的笔记本电脑上运行IDE非常困难。我有一些Cion开放的实例,IntelliJ for Java和PyCharm for Python。
如果你像我一样拥有一台旧笔记本电脑,那么这将不是一个愉快的体验。
但即便如此,我也不得不为不同的语言使用不同的工具。每个工具都有自己的错综复杂和捷径。
不得不随时切换IDE,因此您只能使用每个IDE的最小公分母工具,因为您无法全部学习它们。
通过使用vim,你可以有一位编辑来统治他们。而且你有不同语言的快捷键和键绑定。
但是,在某些项目中使用vim会很麻烦。例如,C#项目与Visual Studio相辅相成,如果您尝试用VS代替vim,您将遇到困难。但是,您可以使用Visual Studio插件来模拟VS中的vim。这样,您可以在首选IDE中安装自己喜欢的快捷方式。
一个类似的插件也可用于其他主要的IDE。
vim也可以很好看
使用裸骨骼vim是有益的,如“治疗IDE疾病”一节中所述。但对于大型项目,我很喜欢使用插件来匹配类似于IDE的行为,因为导航代码库会更容易。
这是我自定义调整vim的截图:
它有很多很棒的功能并且使用它,我完全可以用CLion替代一个相当大的C代码库。
在一系列新文章中,我将开始探索我最喜欢的vim插件并解释它们何时有用以及何时不适用。
但是如果你想有一个类似IDE的vim,你可以克隆我的dotfiles repo并运行install.sh脚本。它将配置我现在使用的确切vim配置。
请注意,那里有一些与非vim相关的配置,但您可以轻松提取相关内容。我已经留下了解释脚本每个部分都做了什么的评论。
结论
除了vim可爱的用户界面之外,至少在一段时间内使用它还有其他好处。如果您习惯了IDE的代码模板和自动完成功能,现在可以试试vim了。被警告,IDE病不容忽视。
此外,如果您想在IDE提供的抽象背后隐藏尖峰,现在是时候打开终端并从头创建一个使用vim的项目。你可能不喜欢这位编辑,但你所获得的知识是无价的。
如果你厌倦了使用5个不同的IDE来完成你的工作,vim也可能是正确的选择。它授予你一套工具,可用于不同的项目。