[VSCodeVim] Vim的思维、哲学与解决问题之道 (二)

Vim的思维、哲学与解决问题之道 (二)


[系列文目录]

上篇文章 我们提到了两点使用Vim的重点原则:

先阅读,再写作。用组合命令解决问题。

这篇文章我们继续详述下面两点:

用更少的动作完成任务。减少重複,提高效率。

三、用更少的动作完成任务


在使用Vim时,我们的动作组合是可以不断琢磨而进步的。透过练习用更少的动作完成任务,我们会越来越有感觉。

并不是所有的组合命令都是最佳解。在前面的组合例子中,我们用最小的动作完成目标。对于刚接触的朋友来说,未必可以一下找到某个情境的最佳解法。

以上篇文章中删除ag字元的示範为例,您可能想先直接进入可视模式(Visual Mode),从a手动选取到g,再用d命令删除。此时太在意最佳解的话可能因为多按了好几个键,感到烦躁,转而寻找其它组合完成目标。

进一步优化的话,您也许会选择组合vfg,使用vfg 选取后,再用d 删除。最后发现其实自己只要用dfg
就可以完成任务了。

但是,不用想要什么问题都找到最佳解才开始,这样反而会过度专注在工具上,拖慢思考的速度。先用自己最自然的命令组合开始,之后慢慢改进即可。

日常开发速度的瓶颈不见得在打字跟命令的顺序上,因此使用不会打断思考的方式开发,让自己写得顺,比写得快重要。若在日常开发时因为思考命令怎么有效而让工作停摆,反而是矫枉过正了。

和程式开发一样,在了解「过早优化为万恶之源」原则的同时,我们不应该完全放弃那3%可以让我们提升开发速度的机会。

四、减少重複,提高效率。


在前面的範例中,我们使用了组合的命令,有时候会有多个类似的情境,可以用同样的命令处理。以一个JavaScript 或TypeScript 开发者熟悉的情境为例,在档案上面import语法的地方我们有几个没有用到或是不存在的类别或物件。

在Vim里面我们可以先将游标移至该物件上的文字上,如下图所示:

接着,使用daW组合命令,删除游标底下的文字与逗号后面的空白。

对于下面第二个有问题的物件,我们继续将游标移动到该字上,并使用.命令即可重複删除的动作,不用重新打重複的指令。

如果有多个物件是同名的,在Vim里面我们可以先使用*命令搜寻同名物件,先按daW 命令完成任务,再按n移至下一个同名的物件,后面按.删除即可。

但现实情境往往不会那么简单,通常没用到的import物件都是不同名的。

在VS Code里,有一个内建的命令「 Go to Next Problem in Files (Error, Warning, Info) 」
(Command ID:editor.action.marker.nextInFiles),可以将游标移动至出现警告或错误的文字上。笔者将其绑在MacOS「 Cmd + e 」的快捷键上。在移除相同位置的import物件时,先用daW删除,后面继续用「 Cmd/Ctrl + e 」与 .命令,即可完成上面任务。

在最后例子里,我们不仅使用了Vim的.命令解决问题,也合併使用了VS Code的快捷键,让我们在相同情境下处理跟解决问题的方式变得快速。

这正是一个善用Vim的思维与VS Code命令以提高编辑器效率的例子。

在我们使用工具的同时,我们并不侷限什么功能是Vim的命令,哪些是VS Code或相关的语言服务提供的,然后仅使用Vim组合命令的模式。而是将Vim的思维内化,在现有的环境下(此处我们是使用VS Code与VSCodeVim),选用适当的方式处理当前的问题,也因此节省了相关的时间成本。

解决问题的方法有许多种,在对同名文字操作的情况,VSCodeVim提供gb命令让我们可以连续选取同名的文字,再统一对文字操作。没有最好的解法,只有更适合当下情境的做法,请视情况採用方法。除此之外,目前版本VS Code 已经内建了Remove unused Import的相关Code Action,游标移至为使用到的import物件处,点击Cmd+.,可于跳出的选单下方选取并执行相关操作。在VS Code里,如果要移除多个unused import,使用此处语言服务提供的功能,这其实是相同情境下更好的做法。

参考资源


Visual Studio Code 实用指南

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章