收藏 分享(赏)

emacs.doc

上传人:11xg27ws 文档编号:7806460 上传时间:2019-05-26 格式:DOC 页数:7 大小:62.50KB
下载 相关 举报
emacs.doc_第1页
第1页 / 共7页
emacs.doc_第2页
第2页 / 共7页
emacs.doc_第3页
第3页 / 共7页
emacs.doc_第4页
第4页 / 共7页
emacs.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、Emacs 教程初步 轮子注: 1 本文内容大都来自网络, 我只时进行了分类编辑, 版权属于原作者。 (公司内部使用, 不要外传) 2如果你是第一次使用 Emacs,可能感觉非常别扭,但不用担心,当你能够熟练使用 一些基本操作后,你会喜欢上它的。 1. Emacs 是什么 Emacs 是一种强大的文本编辑器,在程序员和其他以技术为主的计算机用户中广受欢 迎。Emacs,即 Editor Macros(编辑器宏)的缩写,最初由 Richard Stallman(理 查德马修 斯 托曼)于 1975 年在 MIT 协同 Guy Steele 共同完成。 这一创意的灵感来源于 TECMAC 和 TM

2、ACS, 它们是由 Guy Steele、Dave Moon、Richard Greenblatt、Charles Frankston 等人编写的宏文本 编辑器。自诞生以来, Emacs 演化出了众多分支,其中使用最广泛的两种分别是:1984 年由 Richard Stallman 发起并由他维护至今的 GNU Emacs,以及 1991 年发起的 XEmacs。XEmacs 是 GNU Emacs 的分支,至今仍保持着相当的兼容性。它们都使用了 Emacs Lisp 这种有着极强 扩展性的编程语言,从而实现了包括编程、编译乃至网络浏览等等功能的扩展。 在 Unix 文化里,Emacs 是黑客

3、们关于编辑器优劣之争的两大主角之一,它的对手是 vi。 2. Emacs 的安装和配置 2.1 安装 1)源码安装:从 http:/ftp.gnu.org/pub/gnu/emacs/ 下载源码安装 2)在 Ubuntu 上用 sudo apt-get install emacs 安装 2.2 配置在/ 目录下有个隐藏的.emacs 文件(如果没有,可以自己创建一个) ,这个就是 Emacs 的配置文件。 Emacs 在启动的时候会读.emacs 文件,根据里面的配置设置启动后的状态。 配置文件的内容要用 elisp 语言编写。在这里你可以设置自己的颜色主题,字体,快捷 键,以及一些 Emac

4、s 模式(如 emacs wiki)的配置等等。 网上有很多人贴出自己的配置,一般来说可以拷贝他们的配置到自己的.emacs 文件中, 然后再根据自己的喜好进行改动定制配置文件。 下面列出某.emacs 文件中的一小部分作为示例: 1 (setq user-full-name “Hans Joanphan“) (setq user-mail-address ““) ;设置你的书签文件,默认是/. emacs.bmk,我喜欢把有关 emacs 的文件尽量放在一个文件 夹,所以就修改了。 (setq bookmark-default-file “/.emacs.d/.emacs.bmk“) ;设置

5、缩略词的文件?不大记得了 (setq abbrev-file-name “/.emacs.d/.abbrev_defs“) ;load-path 就同 bash 中的$PATH 相似,emacs 所需要的 Elisp 包都得在 load-path 里的文件夹 中,/.emacs .d/elisp 是我自己添加的 Elisp 包 (setq load-path (cons “/.emacs.d/elisp“ load-path) ;设置 info 的路径,也可通过 Shell 的全局变量$INFOPATH 设置 (add-to-list Info-default-directory-list “

6、/local/info/“) ;由菜单修改配置的东西将会保存在 custom-file 里,这里我设置他在我的 elisp 的集中营里 (setq custom-file “/.emacs.d/elisp/hvj-custom.el“) ;设置 gnus 启动的文件。默认是为 /.gnus.el (setq gnus-init-file “/.emacs.d/elisp/hvj-gnus.el“) (set-cursor-color “white“) ; 鼠标颜色设置为白色 (set-mouse-color “white“) ; 设置背景颜色和字体颜色 (set-foreground-colo

7、r “white“) (set-background-color “darkblue“) 从下面这个网址可以找到很多的设置 http:/www.linuxsir.org/bbs/showthread.php?s=; CC-mode 配置 http:/cc- (require cc-mode) (c-set-offset inline-open 0) (c-set-offset friend -) (c-set-offset substatement-open 0) ;我的 C/C+语言编辑策略 (defun my-c-mode-common-hook() (setq tab-width 4 i

8、ndent-tabs-mode nil) ; hungry-delete and auto-newline (c-toggle-auto-hungry-state 1) ;按键定义 (define-key c-mode-base-map (control ) hs-toggle-hiding) (define-key c-mode-base-map (return) newline-and-indent) (define-key c-mode-base-map (f7) compile) (define-key c-mode-base-map (meta ) c-indent-command)

9、 ; (define-key c-mode-base-map (tab) hippie-expand) (define-key c-mode-base-map (tab) my-indent-or-complete) (define-key c-mode-base-map (meta ?/) semantic-ia-complete-symbol-menu) 注意一下,上面最后两行是代码自动补齐的快捷键。后面我会提到代码自动补齐。 ;预处理设置 (setq c-macro-shrink-window-flag t) (setq c-macro-preprocessor “cpp“) (setq

10、 c-macro-cppflags “ “) (setq c-macro-prompt-flag t) (setq hs-minor-mode t) (setq abbrev-mode t) ) (add-hook c-mode-common-hook my-c-mode-common-hook) ;我的 C+语言编辑策略 (defun my-c+-mode-hook() (setq tab-width 4 indent-tabs-mode nil) (c-set-style “stroustrup“) ; (define-key c+-mode-map f3 replace-regexp)

11、) 12 6.6.2 自动补齐自动补齐通常用的都是 hippie-expand,我也用了很长时间。不过有时候会觉得这个自动补 齐“傻” 了一点, 常会补齐出一些毫不相干的东西, 因为 hippie-expand 是根据你敲过的词 和 kill-ring 等进行判断的,并不对程序语法进行分析。 所以你还需要安装一个代码分析工具, 然后把它加进 hippie-expand 的扩展策略里去。 我们 可以用 semantic。实际上,hippie-expandsemantic 是我所发现的最好的选择了,如果您 有更好的,请您也告诉我一声:) Semantic 是 CEDET 中的一个工具,CEDET

12、是 Collection of Emacs Development Environment Tools 的缩写,它包含了好几个工具,都挺不错的。可惜我只会用其中两个。 您可以在.emacs 中对 Semantic 进行配置,下面是我的.emacs 相关的配置,仅供参考: 导入 cedet: (load-file “/lib/emacs-lisp/cedet-1.0pre3/common/cedet.el“) 配置 Semantic 的检索范围: (setq semanticdb-project-roots (list (expand-file-name “/“) 自定义自动补齐命令,这部分是抄

13、 hhuu 的,如果在单词中间就补齐,否则就是 tab。 (defun my-indent-or-complete () (interactive) (if (looking-at “) (hippie-expand nil) (indent-for-tab-command) ) (global-set-key (control tab) my-indent-or-complete) hippie 的自动补齐策略,优先调用了 senator 的分析结果: (autoload senator-try-expand-semantic “senator“) (setq hippie-expand-t

14、ry-functions-list ( 13 senator-try-expand-semantic try-expand-dabbrev try-expand-dabbrev-visible try-expand-dabbrev-all-buffers try-expand-dabbrev-from-kill try-expand-list try-expand-list-all-buffers try-expand-line try-expand-line-all-buffers try-complete-file-name-partially try-complete-file-name

15、 try-expand-whole-kill ) ) 注意一下我前面 CC-Mode 配置中有这么两行: (define-key c-mode-base-map (tab) my-indent-or-complete) (define-key c-mode-base-map (meta ?/) semantic-ia-complete-symbol-menu) 这样,我们在 CC-Mode 中就可以调用自定义的 hippie 补全了,快捷键是 Tab。 另外,我还把快捷键“Alt + / ”绑定到了 semantic-ia-complete-symbol-menu 命令上, 这是 semant

16、ic 的命令,它会根据分析结果弹出补齐的菜单,效果如图显示: CEDET 中还有一个不错的工具是 speedbar,你可以用它在多个文件中快速切换。在我 的.emacs 配置文件里,我把 speedbar 关联到了 F5 上: 14 (global-set-key (f5) speedbar) 这样用 F5 就可以调出 speedbar,效果如下: 不过说实话,我自己很少用到 speedbar,我通常都是用 dired 配合 bookmark 使用:) 6.7 编译和调试程序按上面的配置, 写完程序和 Makefile 文件后, Emacs 源代码窗口中按 F7 就可以进行编译。 在 因为在

17、my-c-mode-common-hook()函数里,有这么一行: (define-key c-mode-base-map (f7) compile) 默认情况下,emacs 的 compile 命令是调用 make -k,我把它改成了 make。你也可以把它改 成其他的,比如 gcc 之类的。改下面的“make”就行了。 (compile-command “make“) Emacs 会划分一个窗格显示编译的消息,在编译结束后,emacs 会自动将编译器的输出和程 序关联起来,告诉你第几行的程序有问题。直接在出错的行号上按 Enter,就可以跳转到相 应文件的相应行。其实我通常都是用鼠标中键去

18、点出错行号:) 搞定了编译错误后,接着要和逻辑错误斗争了。其实对简单的程序来说,把中间结果打印到 终端是最简单好用的调试办法:)不过稍微复杂点的程序就会晕菜了,这时我们就需要拿 gdb 跟踪程序流程了。 15 你用下面的命令就可以启动 gdb 了。 M-x gdb 通常我喜欢进入 gdb-many-windows 模式,这样就会把一个 Frame 划分为 5 个窗格,同时显 示:gdb 命令窗口,当前局部变量,程序文本,调用栈和断点。 gdb 的命令就不在这里说了,它的文档几乎到处都是。emacs 把 gdb 的命令和快捷键做了绑 定,对于常用的命令,还是输入快捷键比较方便。比如,C-c C-

19、n 是 Next line,C-c C-s 是 step in,其实用的最多的快捷键也就是这两个。 下面是我的 gdb 效果图: 6.8 阅读代码在 emacs 下读代码通常有三种工具,最简单的是 etags,最复杂的是 ecb(emacs code browser) ,位于中间的是 cscope。 etags 和 ctags 一样,只不过前者是用于 emacs 的,后者是用于 vi 的。我个人觉得 etags 功能稍稍显得不够用一点,当然,也可能是我用的不好 :) 欢迎大牛指导。 使用 tags 之前要先对源代码分析建立 tags 文件,在代码所在目录中运行:etags -R 即可。 我常用

20、的就这几个命令和快捷键: M-x visit-tags-table FILE M-. TAG 选择 tags 文件 访问标签 16 M-* C-u M-. 返回 寻找标签的下一个定义 ecb 据说功能强大,但是太复杂了,我懒得折腾它。谁搞定了教教我吧:) 下面是一张 ecb 的效果图。 cscope 是我感觉比较合适的一个工具。 它其实是一个独立的软件, 完全可以脱离 vi 和 emacs 使用。 但是结合 emacs 的强大功能, cscope 就显 得更加方便了。 Emacs 默认自带 cscope GNU 的支持。在使用之前,cscope 也需要对代码进行索引。在 emacs 中可以这样

21、做: C-c s a C-s s I 设定初始化的目录,一般是你代码的根目录 对目录中的相关文件建立列表并进行索引 建完索引之后,你就可以用 cscope 在代码里游荡了。常用的一些命令如下: C-c C-c C-c C-c C-c C-c C-c s s s s s s s s g c C e f i 序找符号 寻找全局的定义 看看指定函数被哪些函数所调用 看看指定函数调用了哪些函数 寻找正则表达式 寻找文件 看看指定的文件被哪些文件 include 上面这些快捷键其实我自己也常常记不全,没关系,抬头看看上面的菜单栏,有一栏就是 Cscope,这些命令里头都有 :) 17 贴一个 cscop

22、e 的效果图吧: 写完了。希望这篇文章对您能有一些用处。有问题或建议可以和我联系。 7. Emacs 的其他功能 Emacs 不仅仅是一个编辑器,他是一个整合环境,或可称它为集成开发环境,这些功能 如让使用者置身于全功能的操作系统中,在基于编辑器的功能基础上,Emacs 自行开发了一 个“bourne-shell-like”的 shell: EShell。Emacs 还可以: 收发电子邮件 通过 FTP/TRAMP 编辑远程档案 通过 Telnet 登录主机 上新闻组 登陆 IRC 和朋友交流 查看日历 撰写文章大纲 对多种编程语言的编辑 调试程序,结合 GDB,EDebug 等。支持 C/C

23、+,Perl ,Python,Lisp 等等 玩游戏 计算器 记日记 煮咖啡 管理日程,Task,ToDo,约会等 个人信息管理 目录管理 文件比较 阅读 info 和 man 文档 18 浏览网站 为各种程序( TeX 等)提供统一的操作界面 这些功能怎么用?我基本也没用过: (大家自己去挖掘吧,呵呵。 8. Emacs 相关资源官方网站:http:/www.gnu.org/software/emacs/ Emacs 中文站: http:/ 某Blog:http:/ Emacs 配置: http:/www.linuxsir.org/bbs/showthread.php?s=&threadid=112349 常用操作:http:/ 颜色主题:http:/www.nongnu.org/color-theme/ 19

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报