问题
如何将下图 @after 中的内容写到 @Around 中呢
这是个在日常开发中很常见的场景:下面的代码想使用上面代码的一部分内容
思路有几种,大致是:
- 切插入模式,直接手撸代码
- 将光标移动到 21 行双引号内,选中双引号中内容复制,移动回 26 行双引号内粘贴
- 删除26行,将光标移动到 21 行任意位置,复制整行,移动到 25 行粘贴,将光标移动到第一个单词(After)末尾,删除第一个单词,手写 Around
- 拿起鼠标选中需要的地方,键盘复制,鼠标点回要粘贴的位置,粘贴
其实 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 成为全场景的解决方案。