Vim漫游键,为什么不设定左手?介绍一种5x倍速漫游方式

742 阅读5分钟

===

先给大家讲个故事。

老家的一个小孩,习惯用左手吃饭,就连擦屁股,都是用左手拿纸。结果,这个习惯,被他粗心的奶奶发现了,不知出于什么原因,暴躁如虎。

接下来,这位奶奶每天在他身边念叨、念叨...,甚至上了刑。前几天回去一瞧,这习惯竟然硬生生给改变了。

老远就能看见,娃娃右手甩的小陀螺,滴溜滴溜直转。我侧了侧身子和孩子保持一个方向,弯腰比划了下手势,确认是右手无疑。

为什么要强迫孩子用右手?因为她自己用的就是右手,基础设施也都是右倾,她就觉得左手不伦不类。

Vim的问题

vim对于程序员来说,无疑是最流行的编辑器。不管你是主动还是被动,都会与它有些接触。主流的Idea、Atom、VSCode等等等等,都会通过插件提供vim的按键绑定。就连chrome,都提供Vimium这样的插件,方便vim党进行漫游操作。

最基础的操作,就是对光标的控制。

`h``l``j``k`

比较令人纳闷的是,这四个字母,并没有什么缩写的含义,他就是相连的几个键而已。

由于我用这几个键是那么的多,以至于键帽光滑、明亮照人。

​ 可以说自己是一个彻头彻尾的vim党。

为什么vim方向键要受人嘲笑

为了不再使用方向键控制光标的移动,强制使用H、J、K、L,可以在vim的配置文件中,把这四个键给禁了。

noremap <Up> <NOP>
noremap <Down> <NOP>
noremap <Left> <NOP>
noremap <Right> <NOP>

这样,你在按下方向键的时候,将什么反应都没有,强制你的手放在hjkl上。

不要和信仰挂钩,也不要有什么哲学方面的讨论。这就是一个习惯而已。

为了说明这个问题,我特意画了几根线,把hjkl四个键给废了,改成了对应的sdfg。

`s``g``d``f`

要是按照这个模式来,照样玩得转,对于入门者来说不会有什么差别。不过一些观念让你深入为主觉得别扭罢了。我可以左手控制方向,右手控制鼠标,在理论上碾压你一番。不要和我谈离着i(插入模式)近的缘故,因为我可以把w改成相应的功能。

这意味着成套的经验转移和定制化,所以我不会这么干。

那么,为什么使用方向键控制vim的移动方向,就要遭受嘲笑呢?难道是因为方向键长得小么?应该是这样。因为现在很多键盘的方向键都没了,你换台机器就抓瞎。

一种更快的浏览方式

以下的内容,来自13年的一个探讨,并在Hacknews上有相应的讨论。下面将变换成第一人称口吻,进行说明。

参考内容:

Habit breaking, habit making ( 1t.click/a8r5 )
Vim users: stop using hjkl (vimcasts.org) (1t.click/a8r8)

光标一个一个的移动,慢如蜗牛。有没有比较快的速度呢?也是有的。

5倍速的左右移动

hl是用来控制光标的左右移动的,每次可以移动一个距离单位。对于左右移动来说,有更快的方式。

与此对应的是bwege等。如果平均每个单词的长度是5,则移动就是5倍速度。

单行字符搜索

我们平常用的,可能搜索模式多一些。就是在普通模式下输入/进行查找的那种。而对于某一行来说,通过fFtT,;等按键,可以快速的,瞬时的定位到相应的位置。

`f` 查找字符 ; f {char}会定位到第一个{char}出现的光标位置
`F` 查找字符;与f类似,不过是向后查找
`;` 重复上次搜索
`, `如果重复上次搜索按多了,则可以通过`,`回退

这些操作,相对来说比较冷门。但对于一个已经入门了vim的人来说,掌握它会如虎添翼。为了强制训练这些命令,可以先禁掉一些按键,进入困难模式。

欲练此功,必先自宫。看看禁的是什么!

noremap h <NOP>
noremap j <NOP>
noremap k <NOP>
noremap l <NOP>

在某个悠闲的让人心醉的下午,就可以沏上一杯小茶,开启训练。

你可以通过强制使用上面所提到的一些增加漫游速度的按键,让自己的肌肉强制接受这种更加快速的设定。这对于追求更加迅捷的效率的你来说,万分珍贵。

End

本篇文章的主题,其实很明了。除了谈到一种可能的让你的vim飞的更快的方式,主要说明了一个习惯问题。

习惯问题就是习惯问题,虽然也能找到一些信仰方面的解释,或者一些神乎其神的吹捧,不过这都是自嗨。什么是好的习惯?不过是群体进化中对某件事情的大多数看法,并没有对错。

但总有些偏了的。习惯问题除了与大众接轨,看起来不那么不伦不类,更重要的,是一种主动纠正和进化。虽然痛苦,却受益无穷。

方块字并不是一定要横着写的,但现在你却是在从左到右读着一行行字

就像是,当所有人都用左手擦屁股,我一定不会用右手。

可关注我的B站账号→→→→B站账号

学习交流群→→→→交流群