作为软件开发人员,我如何将工作效率提高一倍

我是Elixir Lang的忠实粉丝。 但是我遇到的最大的问题之一是IDE。 我尝试了Atom,但很快就放弃了,因为它不断崩溃,后来我尝试了VSCode,这不是很糟糕,让我开心了几个月。

在Elixir社区,人们一直在谈论Spacemacs,我很想尝试一下,很幸运,我在换工作的时候休息了两个月。 我在Elixir有一个宠物项目,并开始使用Spacemacs。

每个人都建议将邪恶模式与spacemacs一起使用,这只不过是spacemac中的vim模式,接下来的两个月里,我仅学习了很少的vim和spacemacs基本命令。 最初,我的目标是至少像在VSCode上一样高效。

你为什么要在乎呢?

Vim不仅仅是文本编辑器,它本身就是一种语言。 它将很快使您从沮丧的神职人员转变为无神的人。 使用vim,您可以学习30个快捷方式,这30个快捷方式可以组合生成1800个奇数快捷方式。

为了举例,请考虑以下基本命令,

d:删除

c:变更

y:复制

v:选择

w:字

i:选择内部(它是一个动词)

t:直到

现在,您可以使用上述7条命令进行组合,包括diw,ciw,viw,yiw,dw,cw,dt {,ct {,yt {,dt(…。),然后继续进行操作。

是什么促使我学习Vim的?

有很多事情使我对vim感兴趣。

  1. 我使用各种语言,例如C#,Java,Elixir,Clojure,JavaScript和TypeScript,在不同的IDE之间切换并记住所有IDE中的所有快捷键始终是一件很痛苦的事情。
  2. 对于动态语言,我使用的大多数IDE都不够好,尤其是对于Elixir Lang(我非常喜欢,并且将我的大部分空闲时间都花在了上面)。
  3. 我在ThoughtWorks的大多数同事都入侵了他们的IDE。 我觉得我花太长时间来实现他们可以在一半时间内完成的事情。 我希望至少能和他们一样好。
  4. 对于诸如代码重构或重构后修复测试之类的事情,您最终要修改大量代码,而快速地完成工作无疑会有所帮助。

转折点

在我的新工作中,我短暂遇到了一个在Intellij Idea中使用Vim的人,他是如此之快以至于我从未见过。

我得出的一个结论是,他的打字速度没有比我们其他人快,但他的按键比我们大多数人都要少。

例如,如果他需要修改当前光标位置下方的第9行代码,则需要两次击键才能到达该位置,而另外几次击键则需要修改代码。

艰难的开始

因为我已经开始在邪恶模式下使用spacemacs,所以我决定在日常Java工作中使用vim-idea插件。

我在Vim上的旅行并不顺利,特别是因为我们正在进行结对编程,每当我使用vim时,我的同事常常会抱怨,因为他们看到我在努力使用Vim快捷方式。

掌握Vim的策略

这次我决心掌握Vim。 因此,我开始阅读《实用Vim》,这本书充满了见解。 它教会了我Vim一种哲学。 读完本书后,我确信vim不仅是编辑器,还是强大的语言。 在接下来的三个月中,我开始做以下事情。

  1. 阅读实用Vim :这本书教会了我Vim背后的哲学。 它教会了我Vim语言和哲学。 我了解了诸如Dot命令,文本对象,动作,操作以及如何有效使用它们的知识。
  2. 我与上本书一起开始研究许多在线资源,我购买了一个痣皮笔记本并开始记下大多数vim命令。
  3. 每天早晨,在冲泡咖啡/茶时,我将执行以下命令。 一开始,我每天花费半小时来修改它们。 随着我逐渐熟悉这些快捷方式,我的修订时间减少到5-10分钟。 我通常会在工作中尝试这些命令。
  4. 就像我说的那样,最初我并没有做太多的练习,我只记得快捷方式并专注于它们背后的推理,例如各种Text对象是什么以及如何有效地使用它们,使用Dot命令可以做什么? 。
  5. 为了真正掌握Vim,我决定购买Happy hacking Keyboard Prof 2 。 该键盘专用于Vim用户(例如,它没有箭头键,并且大写锁定已映射到Contrl键)。 使用此键盘,我不得不一直使用Vim。
  6. 我开始使用idea-vim插件进行Java开发。 将Vim与Idea快捷方式结合在一起是非常强大的结合。
  7. 为了进一步提高Vim技能,我决定全力以赴,我在chrome上安装了vimium插件,以便在chrome上使用Vim快捷方式。 与Spacemacs一起,我盯着Tmux (终端多路复用器)为其配置了Vim,zsh。 我还在命令行中启用了vim(在每个位置im都添加了Vim)。
  8. 禁用了计算机上的连续按键 。 例如,如果我想在下面排10行,则无法按j 10次​​,而不得不寻找其他方法来执行此操作。
  9. 这与Vim无关,但是我一直在打字时练习我的编码速度,这是一个您可以在其中测试各种编程语言打字速度的网站。

得到教训 …

  1. 如果您在插入模式下使用时间过长,则说明操作有误 。 进行编辑,然后快速退出插入模式。
  2. 使用可视模式进行选择也是一种气味 ,例如,如果您要复制一个方法,而不是先在可视模式下选择该方法并粘贴它,则可以直接使用{和y}复制该方法。
  3. 尝试更频繁地使用文本对象,例如(ciw,cis,cip…)。 通常,代码可以视为散文。
  4. 学习有效地使用Dot命令,因为它允许您重复复杂的编辑(例如,可以重复使用ciwdiw之类的文本对象)。

结论

Vim即将停留在该区域。

在积极心理学中, 流动 (也称为区域 )是一种心理状态,在这种状态下,执行一项活动的人完全沉浸在活动过程中充满活力的专注,完全参与和享受的感觉中。 本质上,流动的特征是完全吸收人体中的水分。

当您使用Vim(作为“超级用户”)时,在编辑时做出的每个微决定都不太可能使您偏离区域。 之所以会发生这种情况,是因为每个编辑决定都会转化为一系列按键,您的大脑已经学会了在不涉及其逻辑部分的情况下进行演奏。

经过三个月的Vim强制学习,在生产力方面,我比大多数开发人员都要好。 在我们决定要做什么之后,我经常会在编码之前与我的同事讨论该方法。使用Vim进行代码更改就像进入跨语言,而您的想法就变成了行动。