像我这样习惯了鼠标操作的程序员,学习Vim不是件容易的事。打个夸张的比喻,就好像走路再也不能用腿了,必须倒立过来用手前进。花了大约两个月的时间,终于有点融入血液的感觉,肌肉有了记忆,以至于无论哪里看见光标在闪,都会下意识的按j。
然而挫折感还是无处不在,对付的方法是1)忍着,这样才能成为忍者,2)一点一点进步。有趣的时,有时会有一些小的顿悟。比如最近某天我突然意识到某个痛苦的场景是固定的,一直在重复发生。端杯茶躲进会议室思过,认识到自己‘用错了’Vim,需要意识上的转换。
举个例子,假设有一行文字原先是这样写的:
today.downto(today.days_ago(day_count-1)) {|day| puts day.to_s}
然后我想day_count这个变量名不够好,想要重新命名成num_of_days。未入Vim大坑前,我会用鼠标双击选中day_account,然后松开鼠标,双手去键盘上敲出num_of_days。而现在,我的Vim习惯是,先把鼠标定位到day_count的首字母d,然后
- 按键i,进入编辑模式
- 敲入number_of_days
- 按ESC,回到命令模式,这时光标定位在number_of_days的末字母s
today.downto(today.days_ago(num_of_daysday_count-1)) {|day| puts day.to_s}
- 按键l,让光标右移到字母d
- 按键dw,删除day_count
多么繁琐的操作!然而作为菜鸟的我天天N次这么干。真正让我醒过来的是步骤3和4,猛然发现自己使用Vim的一个常见模式是,按下ESC以后通常总是要按一下l,多么的土鳖!土鳖中的战斗鳖!
痛定思痛后的结论是,做事要用脑子,要尊重Vim的各种命令的本意。做任何一个编辑操作前,要想清楚究竟是以下哪一类:
- 纯粹的插入(听起来有点不对劲,汗颜)
- 纯粹的删除
- 修改(也就是将一段文字换成另外一段)
只有第一种情况,才应该用i。第二种用d加上各种组合键。而我的上述行为,完全应该用c+组合键。也就是说,更‘Vim’的方式是,先把鼠标定位到day_count的首字母d,然后
- 按键cw
- 敲入number_of_days
- 按ESC
顿悟很小,喜悦很大。只不过,现在每一步Vim的操作,我都开始碎碎念,“我到底要干嘛呢,是洗剪吹,哦不,是增删改的哪一种呢”
网友评论
vim的学习曲线决定了只能慢慢来。
(*^-^*)