Vim的小顿悟

作者: oceandull | 来源:发表于2014-02-19 18:52 被阅读426次

    像我这样习惯了鼠标操作的程序员,学习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,然后

    1. 按键i,进入编辑模式
    2. 敲入number_of_days
    3. 按ESC,回到命令模式,这时光标定位在number_of_days的末字母s

    today.downto(today.days_ago(num_of_daysday_count-1)) {|day| puts day.to_s}

    1. 按键l,让光标右移到字母d
    2. 按键dw,删除day_count

    多么繁琐的操作!然而作为菜鸟的我天天N次这么干。真正让我醒过来的是步骤3和4,猛然发现自己使用Vim的一个常见模式是,按下ESC以后通常总是要按一下l,多么的土鳖!土鳖中的战斗鳖!

    痛定思痛后的结论是,做事要用脑子,要尊重Vim的各种命令的本意。做任何一个编辑操作前,要想清楚究竟是以下哪一类:

    1. 纯粹的插入(听起来有点不对劲,汗颜)
    2. 纯粹的删除
    3. 修改(也就是将一段文字换成另外一段)

    只有第一种情况,才应该用i。第二种用d加上各种组合键。而我的上述行为,完全应该用c+组合键。也就是说,更‘Vim’的方式是,先把鼠标定位到day_count的首字母d,然后

    1. 按键cw
    2. 敲入number_of_days
    3. 按ESC

    顿悟很小,喜悦很大。只不过,现在每一步Vim的操作,我都开始碎碎念,“我到底要干嘛呢,是洗剪吹,哦不,是增删改的哪一种呢”

    相关文章

      网友评论

      • 老杜还在:我也是初学者,映射不是难事,关键还是你提到的思维方式的变化,总拿以前的想法来驱动行为,还是原来的效率。
        vim的学习曲线决定了只能慢慢来。
      • oceandull:@Maxint64 多谢指教,键映射这么高级的事宜还没敢试过,感觉时机还不成熟,等我不再碎碎念的时候可能就差不多可以动手了,:P
      • 未知用户sal:将ESC映射为其它的组合键,比如kj,用起来会舒服一些,不用每次都去够那么远的ESC了
        (*^-^*)

      本文标题:Vim的小顿悟

      本文链接:https://www.haomeiwen.com/subject/otphtttx.html