使用Emacs来编程

*/-->

code {color: #FF0000}
pre.src {background-color: #002b36; color: #839496;}

code {color: #FF0000}
pre.src {background-color: #002b36; color: #839496;}

code {color: #FF0000}
pre.src {background-color: #002b36; color: #839496;}

code {color: #FF0000}
pre.src {background-color: #002b36; color: #839496;}

code {color: #FF0000}
pre.src {background-color: #002b36; color: #839496;}

使用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小函数,用来拷贝当前定义的一个函数,或者当前文件的整个代码,用来在调试窗口中粘贴。

Date: 2017-01-14 14:37

Created: 2017-01-14 周六 16:35

Validate

使用Emacs来编程的更多相关文章

  1. 为了树莓派IIraspberrypi安装emacs+ecb+cedet+session+color-theme+cscope+linum

    类似这篇文章写的不多,为了避免以后大家转来转去而忽略了写文章的时间,这些特别加上是2014年6月28日,省的对不上一些软件的版本号(下文中有些"最新"的说法就相应这个时间).假设转 ...

  2. vim和emacs

    vim和emacs 在编程界一直有两大神器的传说.这两大神器一个是emacs,一个是vim.一个是神的编辑器,一个是编辑器之神. 程序员的圈子里面也一直流传着一个段子,说是世界上的程序员分为三种.使用 ...

  3. 使用C语言实现一个虚拟机

    使用C语言实现一个虚拟机 2015-6-22 21:32| 发布者: joejoe0332| 查看: 2891| 评论: 0|原作者: leoxu, Serval, 社会主义好, lostTemple ...

  4. Emacs 配置 Python 编程环境

    python编程环境设置涉及到:自动完成.语法检查.虚拟环境. 为了不把系统搞乱,在python的虚拟环境中安装相关的插件. 一.安装python虚拟环境 virtualenvwrapper sudo ...

  5. Emacs下scheme编程环境的设置

    Scheme编程环境搭建 1.1 安装Chez Scheme git clone https://github.com/cisco/ChezScheme.git cd ChezScheme ./con ...

  6. 我的.emacs文件,用于C/C++及shell编程。

    1. [代码]我的.emacs文件,用于C/C++及shell编程.;;我的配置;;1.基本配置;;外观配置***************;;禁用启动画面(setq inhibit-startup-m ...

  7. 在Emacs下用C/C++编程(转载)

    转自:http://www.caole.net/diary/emacs_write_cpp.html Table of Contents 版权说明和参考文献 参考文献: 版权说明: 序 基本流程 基本 ...

  8. windows 配置 Scheme + Emacs 编程环境

    软件下载列表: Emacs Racket (这里使用 Racket ,更加方便,便于后面配置 Emacs) 配置 安装好 Emacs 后,在 C:\Users\用户名\AppData\Roaming\ ...

  9. ubuntu 下emacs 配置

    (set-language-environment 'Chinese-GB) (set-keyboard-coding-system 'utf-8) (set-clipboard-coding-sys ...

随机推荐

  1. pyppeteer模块的基本使用

    pyppeteer模块的基本使用 引言 Selenium 在被使用的时候有个麻烦事,就是环境的相关配置,得安装好相关浏览器,比如 Chrome.Firefox 等等,然后还要到官方网站去下载对应的驱动 ...

  2. maven(一),maven3.5.3的windows安装及Eclipse集成

    maven用了好长时间,需要系统的学习一下.maven ,是一个项目构建的工具,是一个项目管理和综合工具,具有项目生命周期管理功能. maven现在到了3.5.3,就以这个版本进行. 一.下载mave ...

  3. 关于linux的一些常用的指令

    top:命令经常用来监控linux的系统状况,比如cpu.内存的使用. free:观察内存使用. Find:查找指定的文件. Whereis:查找指定的文件源和二进制文件和手册等 Which:用于查询 ...

  4. SSL certificate problem: self signed certificate

    执行Git命令时出现各种 SSL certificate problem 的解决办法 2014年10月11日 10:45:40   比如我在windows下用git clone gitURL 就提示  ...

  5. HttpClient 之 发送Https请求

    HttpClient包是一个优秀的Http请求的开源jar. 本文Http工具类的封装基于HttpClient,封装后的工具类支持Https请求. 但是由于项目的需要快速的实现,以下代码还可能会有点过 ...

  6. 前序遍历+中序遍历 --> 后序遍历 (二叉树)

  7. Codeforces 362E 费用流

    题意及思路:https://blog.csdn.net/mengxiang000000/article/details/52472696 代码: #define Hello the_cruel_wor ...

  8. Codeforces 1188A 构造

    题意:给你一颗树,树的边权都是偶数,并且边权各不相同.你可以选择树的两个叶子结点,并且把两个叶子结点之间的路径加上一个值(可以为负数),问是否可以通过这种操作构造出这颗树?如果可以,输出构造方案.初始 ...

  9. 转载 Log4j2在WEB项目中配置

    最近决定在新WEB项目中使用新的日志系统Log4j2. 官方介绍和学习文档网址为http://logging.apache.org/log4j/2.x/ 首先在WEB项目中引入以下几个jar包: ① ...

  10. MariaDB 创建表

    在本章中,我们将学习如何创建表. 在创建表之前,首先确定其名称,字段名称和字段定义. 以下是表创建的一般语法: CREATE TABLE table_name (column_name column_ ...