使用Emacs来编程
使用Emacs来编程
看了包昊君的system-config 配置中使用帮助视频 十年Linux,百年Emacs ,感觉非常强大。 还有很多的博客,比如这篇system-config原理与使用的简要说明 。 这是一种全新的工作操作流和交互模式,将Emacs中一些好用的交互方式应用在bash上,应用在linux系统上(sawfish窗口管理)等。这样打造一整套属于自己的编程环境,非常高效和实用。 可以说,这个对于编程开发人员来说,确实也是一种工匠精神,把编程开发流程和开发工具,做到极致的行为。 也可以看到Emacs的强大,以及Emacs的操作方式和理念与其他的工具和系统结合起来之后,可以产生更加强大的组合。当然,我没有做Android开发,所以体会不到在2G甚至9G的源代码里面找到代码的痛苦。我目前配置和使用的helm-gtags就可以满足代码的查找和定位。当然,目前不够的是,对于函数的定义,函数的调用没有判断,需要自己手动去上下查找。这样可以向他学习一下,把函数定义和调用找出来。
目前,我的编程环境中完成有:
1 项目文件管理
使用helm-projectile来进行项目的文件查找。使用这个插件之后,在一个项目中打开、查询一个文件变得非常方便。只需要按 C-c p f
就可以了,然后输入部分文件名,它就会模糊匹配出相关的文件了。
2 代码跳转
- 项目级跳转 目前使用helm-gtags,可以直接查找当前词在整个项目中的定义和调用。由于项目不大,所以,基本上出现的次数都不会太多,可以很方便的预览,或者跳转过去。也可以使用这个插件搜索到结果之后,然后对所有搜索的结果进行编辑,保存之后,会把修改保存到项目的不同文件中去。这样就相当于可以对项目进行快速的重命名或者重构。
- 文件内跳转 文件内的跳转,主要使用helm-swoop和helm-imenu。helm-swoop可以找到文件中关键字出现的多个位置,然后,预览和跳转。也可以进行编辑,这样方便将文件中多处函数名或者变量进行重命名。helm-imenu主要是在函数直接进行跳转。
3 代码补全
- 上下文补全 代码补全使用company-mode,tcl语言主要使用company-dabbrev和company-keyword就可以了,本来也改写了一个company-gtags-tcl用来及时的上下文自动补全,但发现用gtags来查找补全,如果非常频繁的调用还是有延迟的。所以,另外定义了一个快捷键来单独调用。这样,这个功能就可以在整个项目中去用ctags创建所有的函数和变量的index索引,然后,把库函数补全出来,也可以顺便把函数的参数调用方式显示出来。对于,小型的动态语言的项目还是比较方便的。
yasnippet
定义了一些常用的yasnippet,可以快速的插入一些常见的代码块。
4 代码检查
之前使用过一段时间的flycheck-tcl来对代码进行检查。但发现这个其实用处不大。因为一般的错误用不着代码来提示。而逻辑错误,或者其他的错误,这个也检查不了。所以就关掉了。
5 库函数文档查看
之前写过一篇文章来介绍怎么查看html的文档:emacs-w3m查看html帮助手册
6 mvc
创建了一个mvc的package,用来快速的生成一个基本的模块文件结构。
7 其他的小函数
另外也自己写了一些elisp小函数,用来拷贝当前定义的一个函数,或者当前文件的整个代码,用来在调试窗口中粘贴。