为了帮助自己学习 vim,我尝试在工作中使用 nvim 来查看代码。
精确跳转 #
基本的 hjkl
,wb
,^D^U
命令我已经熟悉,但这些只能帮我查看内容,要想选中具体的行和内容仍要不停微操。我记得之前了解过「操作数」+「操作类型」的方式,例如:
12d
: 从当前行开始,连续删除 12 行
于是我试了试,jk
是不是也这样。于是我收获了当前页精确跳转的能力,看着行号然后直接按 jk
就可以,比如跳转到后面三行:3j
。简直完美,干净准确。
行可以跳,但是列比较烦,因为中文的存在,我也不知道一个 w(ord)
到底是多长,基本都是乱猜。直到偶然间按了 f
:他可以帮你搜索某个字符的位置。比如:
fd
: 从当前位置往后,搜索字符d
相应地还有 F
往前搜索。这给我一个震撼,我其实可以很清晰地告诉编辑器要去哪里,只要我自己很清楚就可以。
应用切换 #
因为在学 vim,所以不希望频繁使用鼠标。第一个问题:需要在各种窗口切换,如何解决?先明确需求:不需要使用鼠标、尽量能够快捷不用思考。好了,上网搜一下方案如下:
- 使用 Spotlight 和 Alfred:快捷键调起 Command Center,然后搜索应用并切换。太慢了,要按非常多按键
- 使用快捷键,比如 manico 和 hammerspoon,绑定
Ctrl+1,2,3,4
类似的快捷键进行切换。可以,但是会占用快捷键,而且基本都被占用了(iTerm 占了CMD+1,2,3,..
Chrome 和 VSCode 占了Ctrl+1,2,3,...
) - 自定义按键: karabiner + goku
最后使用了自定义按键的方案。刚开始很不习惯,我要不停思考,我要干什么,我要哪个窗口?才发现在这之前,切换窗口分为两步:
- 调出所有窗口
- 从中选一个
因为 1 现在无了,所以思维瞬间停滞。直到后来用久了,会自己思考要去的地方。
思考方式 #
这让我注意到一个思维方式的不同。
先有选项,然后从中选择最适合的。这种方式很简单,因为选项在这里了,就算不思考也无所谓,大不了多换几个选项,总会有那么一两个是可以用的。但缺点也很明显,人是懒的,这种方式会让人变更懒。
vim 或者说之后提到的应用切换方式,都是有很明目标,然后直接实现。属于是我清楚自己要锁什么,我要执行什么任务达成目标。这会从被动选择变成主动输出,对自身掌控能力的要求要远远高于前者。
果然思考很好,脑袋里从未工作的一部分开始工作了。毕竟谁说快捷键一定要功能键开头呢