原文地址:
http://blog.chinaunix.net/uid-24948934-id-59814.html
内容:
话说,我也是刚刚入门。。。。。
都说emacs是多么的牛X,多么的绚丽,可是刚刚安装好emacs的我,怎么没有发现呢?请看我的 在RHEL5下安装Emacs
其实,安装好之后,你还要定制你的.emacs文件。什么是.emacs文件,听我慢慢道来(话说我在网上找了那么长时间,都没有人将什么是.emacs文件,人家都是直接说,大家看看我的.emacs文件,然后上来直接就是一大堆代码,难道菜鸟的起步水平也是相当高???)
废话少说,切入正题.
大家还是先看一看我的.emacs文件吧,(狂晕!怎么你也来这套???
)
;;///.emacs: ;; plugins directory (add-to-list 'load-path "~/etc/lisp") ;;;;---------------------- UI ------------------------- ;; 标题栏,显示"buffer的名字@Emacs" (setq frame-title-format "%b@rain_Emacs") ;; 禁用启动信息 (setq inhibit-startup-message t) ;; 显示光标位置: (setq column-number-mode t) (setq line-number-mode t) ;; 设置kill-ring-max为200 (setq kill-ring-max 200) ;; 设置tab为4个空格的宽度,而不是原来的2 (setq c-basic-offset 4) (setq default-tab-width 4) (setq-default indent-tabs-mode nil) ;; 设置让光标指到某个括号与它匹配的括号 (show-paren-mode t) (setq show-paren-style 'parentheses) ;; 禁用终端响铃 ;;(setq visible-bell t) ;; 高亮显示选择区域 (setq transient-mark-mode t) ;;----------------- 显示日期时间-------------------- ;;;(setq display-time-day-and-date t) ;;;(setq display-time-24hr-format t) ;;;(setq display-time-day-and-date t) ;(setq display-time-use-mail-icon t) ;;;(setq display-time-interval 10) ;;;(display-time) ;Time-stamp 设定文档上次保存的信息------------------------- ;需在文档的前8行中加入关键字如: Time-stamp: <> 或 Time-stamp: "",便会自动保存时间戳 (setq time-stamp-active t) ;更新timestamps (setq time-stamp-warn-inactive t); warn if unable ;设置time-stamp的格式 ;当前使用的系统用户名[%u] ;当前的操作系统名[%s] ;星期几[%:a] ;当前时刻%02H : %02M : %02S ;(setq time-stamp-format " File [%f] modified by Liangbo on %:a, %:y.%02m.%02d at %02H : %02M : %02S on %s ") (setq-default time-stamp-start "\\(\\([Ll]ast-?[Uu]pdate\\)\\|\\([Tt]ime-?[Ss]tamp\\)\\): [^A-Za-z0-9: -\"']?[<\"'][^<>A-Za-z0-9: -\"']?") (setq-default time-stamp-format " File [%f] modified by Liangbo on %:y.%02m.%02d ") (setq-default time-stamp-end "\\\\?[^<>A-Za-z0-9: -\"']?[>\"'][^A-Za-z0-9: -\"']?") (add-hook 'write-file-hooks 'time-stamp);;保存动作时更新时间戳 ;------------------------------------------------------- ;; 不产生备份文件 (setq make-backup-files nil) (setq-default make-backup-files nil) ;不产生临时文件 ;; 取消自动保存 (auto-save-mode 0) ;; 防止页面滚动时跳动 (setq scroll-margin 3 scroll-conservatively 10000) ;; 保存上次的操作记录到SESSION: http://emacs-session.sourceforge.net/ ;;(require 'session) ;;(add-hook 'after-init-hook 'session-initialize) ;;(setq session-save-file "~/etc/emacs/session") ;; 给每行显示行号: http://stud4.tuwien.ac.at/~e0225855/linum/linum.html ;;(require 'linum) (defun my-c-mode-auto-pair () (interactive) (make-local-variable 'skeleton-pair-alist) (setq skeleton-pair-alist '( (?` ?` _ "''") (?\( _ ")") (?\[ _ "]") (?{ \n > _ \n ?} >) (?\" _ "\""))) (setq skeleton-pair t) (local-set-key (kbd "(") 'skeleton-pair-insert-maybe) (local-set-key (kbd "{") 'skeleton-pair-insert-maybe) (local-set-key (kbd "'") 'skeleton-pair-insert-maybe) (local-set-key (kbd "[") 'skeleton-pair-insert-maybe) (local-set-key (kbd "\"") 'skeleton-pair-insert-maybe)) (add-hook 'c-mode-hook 'my-c-mode-auto-pair) (add-hook 'c++-mode-hook 'my-c-mode-auto-pair) ;;输入左边的括号,就会自动补全右边的部分.包括(), '', [] , {} ,"" ;;;;自动补齐策略 (defun my-indent-or-complete () (interactive) (if (looking-at "\\>") (hippie-expand nil) (indent-for-tab-command)) ) ;(global-set-key [(C-tab)] 'my-indent-or-complete) ;;;(control tab) ;(autoload 'senator-try-expand-semantic "senator") ;(setq hippie-expand-try-functions-list ; '( ; 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 ; try-expand-whole-kill ; ) ;) ;;web方式显示行号 (require 'wb-line-number) (wb-line-number-enable) ;; 颜色主题: http://download.gna.org/color-theme/ ;;(require 'color-theme) ;;(color-theme-initialize) ;;(color-theme-midnight) ;; 'y' for 'yes', 'n' for 'no' (fset 'yes-or-no-p 'y-or-n-p) ;; 代码折叠: ;; http://www.gnuvola.org/software/j/hideshow/ ;;(load-library "hideshow") ;;(add-hook 'c-mode-hook 'hs-minor-mode) ;;(add-hook 'c++-mode-hook 'hs-minor-mode) ;;(add-hook 'java-mode-hook 'hs-minor-mode) ;;(add-hook 'perl-mode-hook 'hs-minor-mode) ;;(add-hook 'php-mode-hook 'hs-minor-mode) ;;(add-hook 'emacs-lisp-mode-hook 'hs-minor-mode) ;; 给Emacs添加Tab功能: http://emhacks.sourceforge.net/ ;;(require 'tabbar) ;;(tabbar-mode 1) ;;(setq tabbar-buffer-groups-function ;;(lambda (buffer) ;;(list "All buffers"))) ;;(global-set-key (kbd "M-[") 'tabbar-backward-group) ;;(global-set-key (kbd "M-]") 'tabbar-forward-group) ;;(global-set-key (kbd "M-p") 'tabbar-backward-tab) ;;(global-set-key (kbd "M-n") 'tabbar-forward-tab) ;;(global-set-key [(control tab)] 'tabbar-forward-tab) ;; 隐藏滚动条 ;;(scroll-bar-mode -1) ;; 打开图片显示功能 (auto-image-file-mode t) ;; 支持emacs和外部程序的粘贴 (setq x-select-enable-clipboard t) ;;;;----------------- Programming ------------------------ ;; CEDET: http://cedet.sourceforge.net/ ;;(add-to-list 'load-path "~/etc/lisp/cedet/common") ;;(require 'cedet) ;;(semantic-load-enable-excessive-code-helpers) ;;(setq semanticdb-default-save-directory "~/etc/emacs/") ; semanticdb默认路经 ;; 设置编译命令为:make (setq compile-command "make") ;; C/C++语言风格 (defun wx-c-mode-hook() (setq tab-width 4 indent-tabs-mode nil) (c-set-style "stroustrup") ; 关闭自动换行 (c-toggle-auto-newline -1) (global-hl-line-mode 1);;高亮当前行 (global-auto-revert-mode t);;在外部更新了文件后,自动更新 ; 贪心删除 (c-toggle-hungry-state 1) ; ctrl+`: 代码折叠 (define-key c-mode-base-map [(control \`)] 'hs-toggle-hiding) ; 换行自动递进 (define-key c-mode-base-map [(return)] 'newline-and-indent) ; F7:编译 (define-key c-mode-base-map [(f7)] 'compile) ) (add-hook 'c-mode-hook 'wx-c-mode-hook) (add-hook 'c++-mode-hook 'wx-c-mode-hook) ;;---------------- Personal Info. ---------------------- (setq user-full-name "rain") (setq user-mail-address "lqy8310@gmail.com") (setq track-eol t) ; 当光标在行尾上下移动的时候,始终保持在行尾。 ;;;;---------------- Global Hot Key ---------------------- ;; F1:最大化当前buffer: (global-set-key [(f1)] 'delete-other-windows) ;; F2:切换到dired模式 (global-set-key [(f2)] 'dired) ;; F3:切换到shell模式 (global-set-key [(f3)] 'ansi-term) ;; F4:关闭buffer (global-set-key [(f4)] 'kill-buffer-and-window) ;; F5:打开speedbar (global-set-key [(f5)] 'speedbar) ;; 跳到另一个窗口 (global-set-key [(f6)] 'other-window) ;; F7:编译 (global-set-key [(f7)] 'compile) ;; F9:gdb (global-set-key [(f9)] 'gdb) ;; F10: gdb:next (global-set-key [(f10)] 'gud-next) ;; F11: gdb:step (global-set-key [(f11)] 'gud-step) ;颜色主题 (add-to-list 'load-path "~/etc/lisp/color-theme-6.6.0") (require 'color-theme) (color-theme-initialize) ;(color-theme-pok-wog) ;(color-theme-aalto-dark) ;(color-theme-bharadwaj-slate) ;;(color-theme-aalto-light) ;(color-theme-white-on-grey) ;(color-theme-robin-hood) ;(color-theme-gray30) (color-theme-midnight) ;" http://www.emacswiki.org/cgi-bin/wiki/ColorTheme " ;###color-theme^^^^ ;### auto-complete #### ;" http://www.emacswiki.org/emacs/AutoComplete " ;参考其User Manual安装 (add-to-list 'load-path "/root/etc/lisp/auto-complete-1.3.1") (require 'auto-complete-config) (add-to-list 'ac-dictionary-directories "/home/diga/.emacsLoadpath/auto-complete-1.3.1/ac-dict") (ac-config-default) ;### auto-complete ^^^^
|
下面我大体说一下:
首先这个/root/.emacs文件在你安装好emacs23后是没有的,你需要手动新建这个文件。
vi ~/.emacs
然后将我上面的代码粘贴进去,然后再看上面的代码
(add-to-list 'load path "~/etc/lisp")
|
这一句代表emacs的load-path 也就是emacs的插件安放位置是~/etc/lisp目录,因此你还需要新建目录
一些所谓的插件无非就是一些*.el文件
注意:
在打开emacs时候,它会自动加载.emacs文件,在加载过程中不能出现错误,如果有错误提示,emacs就会工作不正常。你可以输入
然后看提示哪些错误,一一改正。
下面举一个例子:
比如在上面我的代码中,有这样的代码:
;颜色主题 (add-to-list 'load-path "~/etc/lisp/color-theme-6.6.0") (require 'color-theme) (color-theme-initialize) ;(color-theme-pok-wog) ;(color-theme-aalto-dark) ;(color-theme-bharadwaj-slate) ;;(color-theme-aalto-light) ;(color-theme-white-on-grey) ;(color-theme-robin-hood) ;(color-theme-gray30) (color-theme-midnight) ;" http://www.emacswiki.org/cgi-bin/wiki/ColorTheme " ;###color-theme^^^^ |
一看注释就知道,这是emacs的一个颜色主题插件,其中,在;之后的都会被注释掉
看到:
(add-to-list 'load-path "~/etc/lisp/color-theme-6.6.0")
后,我们知道,这个主题插件放置在
~/etc/lisp/color-theme-6.6.0 目录里
如果你上面仅仅是拷贝了我的代码,并把它粘贴在 .emacs文件中,那你是看不到这个主题效果的。
原因就是你还没有下载并安装这个主题插件
1、你可以去
http://www.emacswiki.org/cgi-bin/wiki/ColorTheme 下载
2、解压到 ~/etc/lisp目录就会自动生成
~/etc/lisp/color-theme-6.6.0 目录
3、然后你再把我的颜色主题部分的代码使能
你就能看到效果。。
特别强调:
在加载 .emacs的过程中,一定不能出错,如出错了就输入命令
查看有那些错误,并排除错误,一般的错误都是像我刚才举的例子一样,在.emacs里面有一些代码,但是相应目录里面并没有插件。
解决办法有两个:1、去搞定这些插件,2、把那些代码屏蔽
好了,先讲这么多吧!