Vim 二三事

111 阅读2分钟

问题

如何将下图 @after 中的内容写到 @Around 中呢

这是个在日常开发中很常见的场景:下面的代码想使用上面代码的一部分内容

vim

思路有几种,大致是:

  1. 切插入模式,直接手撸代码
  2. 将光标移动到 21 行双引号内,选中双引号中内容复制,移动回 26 行双引号内粘贴
  3. 删除26行,将光标移动到 21 行任意位置,复制整行,移动到 25 行粘贴,将光标移动到第一个单词(After)末尾,删除第一个单词,手写 Around
  4. 拿起鼠标选中需要的地方,键盘复制,鼠标点回要粘贴的位置,粘贴

其实 Vim 还有许多其它的命令方法,比如精确定位到第几行第几列,使用正则查找与替换,但在实际开发中不太具有可操作性,故不作考虑。

根据思路总结比较各方法如下:

方法一:直接手撸

  • 操作:iex↙pu↙v↙c↙e↙s↙s↙I↙.*()
  • 按键数:23
  • 所需时间:13 秒左右

方法二:复制所需

  • 操作:21gg↙wwwv$hhhy26gg$hhp
  • 按键数:22( gg 换 G 则 20 键,不过操作更复杂且时间无区别)
  • 所需时间:15s 左右(日常使用时间通常更长)

方法三:复制整行

  • 操作:dd21ggyy25ggpldwiAr↙
  • 按键娄:20
  • 所需时间:15s 左右(日常使用时间通常更长)

方法四:鼠标辅助

  • 操作:🐭y🐭p
  • 按键数:2
  • 鼠标定位选取:2 次
  • 所需时间:5s 左右

感想

也许在学习和使用 Vim 的过程中不应该过于死板,过度追求所谓的高手境界而弃用鼠标。

客观分析,鼠标的优势在于屏幕定位,快而精确,这也是 FPS 游戏中鼠标瞄准取代按键瞄准的原因。再度思考,Vim 的优势在于无 IDE 编程与命令模式,这与现代编程是有点冲突的,因为现代编程里热门语言基本都用 IDE。IDE 本身也是为了提高生产力的一个工具,多个工具一起用难免会有冲突,需要使用者的选择与取舍,这个取舍可以是工具,也可以是多个工具之间的某些功能。

要明白 Vim 只是一个工具,是人使用工具而不是工具使用人。Vim 只是历史发展过程中的一个适合当期使用的结果,对于现代编程也并不是完美的,应该因地制宜,发挥 Vim 的优点,而不是不加思考地试图让 Vim 成为全场景的解决方案。