众所周知,在linux下做开发离不开两个常用的编辑器---vi和emacs。vi我用的不多,不好做评价。emacs功能非常强大,扩展能力强。网上有很多插件,可以丰富你的emacs功能。开始使用emacs会觉得很难用,呵呵,一般nb的东西都是这样。。。。如果你上手了,那么你就会体验到它强大的功能了。下面就来讲讲emacs环境的配置。
配置emacs主要就是安装插件,我在参考了网上一些优秀的文章,选择了以下几个插件。
1、cedet,它是Collection of Emacs Development Environment Tools的缩写,最有用的就是semantic。按照INSTALL文件中的内容,编译并安装cedet。然后把INSTALL中这段内容
- ;; Load CEDET
- (load-file "~/cedet-VERSION/common/cedet.el")
- ;; Enabling various SEMANTIC minor modes. See semantic/INSTALL for more ideas.
- ;; Select one of the following:
- ;; * This enables the database and idle reparse engines
- ;;(semantic-load-enable-minimum-features)
- ;; * This enables some tools useful for coding, such as summary mode
- ;; imenu support, and the semantic navigator
- (semantic-load-enable-code-helpers)
- ;; * This enables even more coding tools such as the nascent intellisense mode
- ;; decoration mode, and stickyfunc mode (plus regular code helpers)
- ;; (semantic-load-enable-guady-code-helpers)
- ;; * This turns on which-func support (Plus all other code helpers)
- ;; (semantic-load-enable-excessive-code-helpers)
- ;; This turns on modes that aid in grammar writing and semantic tool
- ;; development. It does not enable any other features such as code
- ;; helpers above.
- ;; (semantic-load-enable-semantic-debugging-helpers)
加入到在.emacs(emacs配置文件)中。默认选择的是(semantic-load-enable-code-helpers),你也可以选择(semantic-load-enable-guady-code-helpers)和 (semantic-load-enable-excessive-code-helpers),但只能选择一个。
2、ecb,它是 Emacs Code Browser 的缩写,这个插件的功能从其名字上就是能知道它的意思-----代码浏览器,不错,它可以把emacs划分成几个窗口,每个窗口都显示不同的内容。如图
要使用它的前提是必须安装Semantic,Eieio,speedbar。其实这3个已经在cedet中了,所以你安装了cedet的话就不必安装这3个插件了。同样,根据README中内容对ecb进行编译安装。并在.emacs中加入下面的内容:
- ;;;;load ecb
- (add-to-list 'load-path "/root/emacs/ecb-2.32")
- ;;(require 'ecb)
- (require 'ecb-autoloads)
并且加入
- (global-set-key [f12] 'ecb-activate) ;;
- (global-set-key [C-f12] 'ecb-deactivate)
通过快捷键F12就可以激活ecb了,ctrl+F12可以让关闭ecb。在ecb-layout-defs.el文件中,定了了layout的类型。
3、cscope:这个插件可以使emacs实现类似source insight那种符号查找等功能。进行编译安装,在.emacs中加入
- (add-to-list 'load-path "/root/emacs/cscope-15.6/contrib/xcscope")
- (require 'xcscope)
4、doxymacs:这个插件可以生成各种注释,比如函数注释,文件头说明,多行注释等等。同样进行编译安装,然后在.emacs中加入
- ;;doxymacs
- (add-to-list 'load-path "/root/emacs/doxymacs-1.8.0/lisp")
- (require 'doxymacs)
5、session:这个插件可以保存最近访问和修改的文件列表。编译安装然后在.emacs中加入
- (add-to-list 'load-path "/root/emacs/session")
- (require 'session)
- (add-hook 'after-init-hook 'session-initialize)
- (add-hook 'c-mode-common-hook ( lambda() ( c-set-style "k&r" ) ) )
- (add-hook 'c++-mode-common-hook ( lambda() ( c-set-style "k&r" ) ) )
防止乱码并设置字体
- (set-language-environment 'Chinese-GB)
- (set-keyboard-coding-system 'utf-8)
- (set-clipboard-coding-system 'utf-8)
- (set-terminal-coding-system 'utf-8)
- (set-buffer-file-coding-system 'utf-8)
- (set-default-coding-systems 'utf-8)
- (set-selection-coding-system 'utf-8)
- (modify-coding-system-alist 'process "*" 'utf-8)
- (setq default-process-coding-system '(utf-8 . utf-8))
- (setq-default pathname-coding-system 'utf-8)
- (set-file-name-coding-system 'utf-8)
- ;(setq ansi-color-for-comint-mode t) ;;处理shell-mode乱码,好像没作用
- (create-fontset-from-fontset-spec
- "-*-courier-medium-r-normal-*-14-*-*-*-*-*-fontset-courier")
- (set-default-font "fontset-courier")
- (setq default-frame-alist
- (append
- '((font . "fontset-courier")) default-frame-alist))
设置一些快捷键:
- (global-set-key [(f4)] 'speedbar-get-focus)
- (global-set-key [(f5)] 'compile)
- (global-set-key [(f6)] 'gdb)
- (global-set-key [(f7)] 'gdb-many-windows)
- (global-set-key [f1] 'semantic-ia-complete-symbol-menu)
其中,我设置了F1为符号自动补齐的功能,该功能来自semantic,不过有的时候会出现补全的内容是错误的。F5为编译,F6进入gdb模式,F7进入gdb多窗口模式。这里首先要进入gdb中,然后按F7才能调出窗口,效果图如下:
还有很多功能,有兴趣的大家慢慢探索。不过我觉得这些功能已经可以满足基本的需求了。