» 您尚未登录:请 登录 | 注册 | 标签 | 帮助 | 小黑屋 |


 58 1234
发新话题
打印

[电脑] 打算学习一下Vim,有同好或专家么?

LS所言差矣啊,诸如快速插入空行和合并两行,行补全,所有光标移动操作全部带撤销和恢复,快速跳转到定义处,自定义文本缩写,内嵌的sed,页面自动分割,等等,这些是相当常用的

对码农来说,磨刀向来是不误砍柴工的,尽一切可能把自己从繁琐的文本格式化操作中解脱出来是码农们的追求。很多时候,思路远远比手快,因为很多都是框架性的代码,根本不需要动大脑


TOP

对我而言,如果在code review时发现雷同代码出现三次,基本上就是个很好的重构信号。绝大多数代码应该是有意义而且不重复的。如果是语言相关的框架性代码,那么visual assist之类的intellisense工具已经可以减少绝大多数重复性劳动,无需自己去做过多编辑器的定制工作。

当vi出现的时候,其理念是两手不用离开主键盘就能完成几乎所有操作。在当时,多数项目都是一个程序员坐在电脑前敲出几千行代码,vi可以几乎完美的达到这个目标。可如今这样的机会是越来越少。开发时需要cross-reference的内容不再仅限于unix的man或者有限的api,而是google,stackoverflow,wiki,UML,mindmap甚至outlook。对于一个有一定复杂度的项目,程序员生成代码的速度实际上是非常有限的,往往平均一天不超过一二十行。编辑器的效率在开发效率中已经不占太大比重。



TOP

egg pain.


TOP

posted by wap, platform: GoogleChrome

http://zh.wikipedia.org/wiki/Vim

wiki上的vim页面说的比我写的清楚多了……

TOP

引用:
原帖由 ibelieveicandie 于 2011-3-13 06:23 发表
对我而言,如果在code review时发现雷同代码出现三次,基本上就是个很好的重构信号。绝大多数代码应该是有意义而且不重复的。如果是语言相关的框架性代码,那么visual assist之类的intellisense工具已经可以减少绝大 ...
不是雷同代码,而是类和模板相关的框架性代码,填充各种属性方法,再调接口把这些对象推入链接符号表中或是链表之类的数据结构上或是单纯地填充方法函数。举个形象的例子就是不停的填写各种不同要求的申请表格,把自己的属性按框架的要求进行换算、填充和提交,并为上层框架提供具体的方法

参考资料,我80%是纯代码,20%是手册,的确不需要鼠标,呃,实际上,ubuntu所有操作都可以不用鼠标,包括查看xmind,只是看网页单手用鼠标比较舒服。另外写代码的时候我从不google wiki,google wiki的时候从不写代码,而且除了跑通的代码以外,我什么也不信,包括手册

TOP

posted by wap, platform: GoogleChrome

确实, 写代码时最不爽的就是要用鼠标了, 不是速度的问题, 用鼠标可能会打断思路

TOP

posted by wap, platform: iPad
引用:
原帖由 @henvelleng  于 2011-3-13 16:15 发表
不是雷同代码,而是类和模板相关的框架性代码,填充各种属性方法,再调接口把这些对象推入链接符号表中或是链表之类的数据结构上或是单纯地填充方法函数。举个形象的例子就是不停的填写各种不同要求的申请表格,把自 ...
看起来是需求不同。对我而言,平时写代码时需要同时参考或者试验的东西太多,填充框架代码的机会太少,所以输入效率影响不大。

你描述的这种场合我也遇到过几次。如果框架工作量大的话,是否直接做个代码生成器会更有效一点?我遇到类似情况一般都选择生成代码了。手写太累,也容易出错。如果以后框架接口有改动,改改描述文件重新生成一遍就解决问题。描述文件自己一般也有大块适合生成而不是手写的内容,不过一个简单的正则表达式转换工具就可以适应大多数情况。

TOP

引用:
原帖由 ibelieveicandie 于 2011-3-13 21:03 发表
posted by wap, platform: iPad

看起来是需求不同。对我而言,平时写代码时需要同时参考或者试验的东西太多,填充框架代码的机会太少,所以输入效率影响不大。

你描述的这种场合我也遇到过几次。如果框架工作量大 ...
不可能用代码生成器的,而且不是重复操作

无论是使用框架还是自己构建框架,在我看来都是这类无脑劳动,没有任何算法,设计模式早就规划好了,剩下的就是实现,但这种劳动绝不是代码生成器可以做到的,比如自己实现一个小型的网络协议栈,没难度,但是代码量很大,敲键盘敲到手疼

你一天10-20行代码的速度,我只有写验证程序调硬件的时候才有可能会这样,95%以上在看打印信息和JTAG查内存值寄存器值

TOP

posted by wap, platform: iPad

完全理解。不过,就这种情况而言,是否能找到现有的开放源码实现?在一个现成的基础上修改,比重新发明轮子会更有效率也更有趣。

TOP

原样抄恐怕会有许可证问题的,反正这种活也不是天天干,不至于给自己找麻烦

在已有的框架上添加对象则通常会有类似的实现,这种代码是可以参考的,但也不是简单到可以复制粘贴,肯定还是有很多需要完全原创扩充的部分的

TOP

先说说快速搜索,大部分的编辑器和ide都是ctrl+f,弹出个对话框,敲入搜索的字符串,点击确认,没什么不好,但有一点,如果这个单词不是很确定,或者是敲错了,还是要重来,vim的方式是/,然后即打即敲,编辑器会及时定位到搜索到的位置,边敲边高亮单词,如果没有发现这个单词,就不会有高亮,说明在这个文件里没这个单词,不要小看这个操作,在我的同事在数万行的代码里,因为记不清函数名称苦苦搜索,或者在ide数百行的函数列表里按字母排序寻找时,我早已经定位并解决了问题。搜索是基本操作,关键是效率啊,还有,sqlite单文件的代码好像有十几万行吧,ue,em等编辑器还行,我的visual studio和xcode通常都会死掉。

TOP

只用过linux vim写过shell脚本。。
感觉vim的确是写代码利器,普通文本并不是很适合

TOP

引用:
原帖由 breeze7086 于 2011-3-14 14:05 发表
只用过linux vim写过shell脚本。。
感觉vim的确是写代码利器,普通文本并不是很适合
所以根本point就是把普通文本写成code, 从word转latex, 这样各种snippet, 跳转上色版本控制都有用了.

TOP

 58 1234
发新话题
     
官方公众号及微博