我的emacs配置文件

下面是emacs配置文件的逐条解释:

(load "/usr/share/emacs/site-lisp/site-gentoo")

这个文件是Gentoo自己写的,基本上我们emerge某个emacs package的时候
Gentoo会在这个文件里头加入新emerge的package的路径。load的意思是把这个文
件也加入主要的配置文件。当然,如果用Debian的话就应该把这一行删掉。

(load-file "~/.emacs_tex.el")
(load-file "~/.emacs_ess.el")

告诉emacs导入这些文件。这些文件是我自己写的,省得缺省的.emacs文件太大不
好管理。第一个是和LaTeX有关的配置,第二个是ESS(emacs speak
statistics).

(global-font-lock-mode t)

打开font-lock-mode (就是平时你看到的彩色字体)

(setq font-lock-maximum-decoration t)

让emacs最大限度的“彩色化”你的程序

(show-paren-mode t)

这个意思是当你的光标在一个括号上面的时候,emacs会给你提示。而且如果是
miss match,比如说一个"(" 对应了一个"]",emacs会用和平时不同的颜色给出
警告。

(setq show-paren-style ‘expression)

这种加亮有好几种不同的方法,expression是整个括号的内容都加亮。

(load-file "~/.emacs_face.el")

这个是我写的关于“face”也就是字体颜色的配置文件

(if (not window-system) (xterm-mouse-mode 1) (xterm-mouse-mode -1))
(mouse-wheel-mode 1)

这一段是在terminal比如说putty里面用鼠标的设置。好处是你可以用鼠标来定位,
copy/paste,还可以用鼠标中间的辊轴来滚动翻页。坏处是和putty本身的
copy/paste冲突,所以putty的copy/paste必须加上一个shift键。新手应该先试
验一下加上这个mode/不加这个mode,两种不同的方法,到底哪种好用。第一段
的window-system是指X窗口下的emacs,那个emacs天生支持鼠标,就不用
xterm-mouse-mode了。后面的mouse-wheel-mode是让鼠标辊轴可以滚动翻页。

(setq-default transient-mark-mode t)

打开这个transient-mark-mode之后,选中的部分才会有不同的颜色。

(setq fill-column 76)

emacs有个fill-paragraph(其实还有一些别的类似的)的命令(M-q)可以帮你
自动调整文本宽度。76是指让美化后的每一行最长为76个字符。

(setq inhibit-startup-message t)

去掉每次启动emacs出来的无用的“信息”

(setq column-number-mode t)
(setq line-number-mode t)

在下方小横条里显示行数和列数。一个相关的功能是setnu-mode。不过那个
setnu-mode太占用空间了,只能在比如说写好了一个文件,开始修改的时候比较
有用。

(setq kill-ring-max 200)

emacs cut(C-w, C-k) 命令会把你所有cut掉的部分都存起来,之后可以用M-y
一个一个的调出来。set 这个值为最多存档两百个这样的命令。

(setq-default indent-tabs-mode nil)

emacs提供自动对齐命令(indent-line等等,TAB键,还有C-j),缺省用TAB键来
对齐,但我比较喜欢用空格。

(setq default-tab-width 4)

一个TAB等于四个空格

(setq tab-stop-list ())

控制在Text mode下面按TAB的行为的一个设置,制表的时候有用

(setq scroll-margin 5)
(setq scroll-step 1)

关于卷页的一些设置。scroll-margin 5的意思是当光标在本页倒数(顺数)第5
行的时候继续往下(往上)就开始卷页,而不是等到移动到最后一行才开始。
scroll-step 1的意思是以一行为单位卷页。

(setq default-major-mode ‘text-mode)

emacs的default mode是LISP,完全没有用处。text-mode还有一些比较好的功能
(比如说tab键)。

(mouse-avoidance-mode ‘animate)

很好玩的一个功能。当你的光标慢慢靠近你的鼠标箭头的时候,鼠标会被“弹
走”。

(setq frame-title-format "%S: %f")

让你的emacs(在X窗口下)通过上方横条显示出你正在编辑的文件名。

(setq sort-fold-case t)

emacs有不少和sort有关的命令。缺省设置是分大小写的,但大多数时候我们都希
望不分大小写。

(setq make-backup-files t)
 
(setq version-control t)

(setq backup-directory-alist (quote ((".*" .
"~/documents/emacs_backups/")))) (setq kept-old-versions 1) (setq
kept-new-versions 5) (setq delete-old-versions t)

这一段告诉emacs做备份文件,把所有的备份文件都放
在~/documents/emacs_backups里面,保留5份新备份加上一份老备份,最后当我
们有了超过五份新备份,还要再加新备份的时候emacs自动把最老的备份按照顺序
删除。

;; Treat ‘y’ or <CR> as yes, ‘n’ as no.  (fset ‘yes-or-no-p ‘y-or-n-p)
    (define-key query-replace-map [return] ‘act) (define-key
    query-replace-map [?\C-m] ‘act)

emacs有的时候会问我们问题,缺省是必须按Yes才行,这一段命令让’y’或者回车
就等于回答Yes。

;;;;;;;;;;;;;;;;;KEY MAPPINGS;;;;;;;;;;;;;;;;;; (global-set-key ‘[f2]
‘ispell-buffer)

让F2执行语法检查。一个相关的命令是flyspell-mode。这个命令让你边写的时候
emacs边执行拼写检查(类似于Word)。flyspell-mode还支持LaTeX。但是它的缺
点是占用系统资源所以比较慢,而且会让另外一两个小mode出问题(比如说有一
个制表的mode,table.el就和flyspell-mode冲突),所以我就没有把这个Mode加
到配置文件里面。

(global-set-key ‘[f5] ‘bookmark-jump)

f5执行跳转到bookmark。emacs可以把你常用的文件设定书签,这样可以省很多时
间去找这写文件。设定书签:

1.  打开这个文件;

2.  C-x r m,

3.  输入一个名字(emacs会给你文件名作为提示)。这个书签会被emacs保存在
这个文件里:~/.emacs.bmk。

另外几个有用的命令:

C-x r b 是emacs自己的bookmark-jump命令;

C-x r l 列出所有bookmark

(global-set-key ‘[f9] ‘compile)

调用make的一个命令。写C程序的时候用这个命令的好处是emacs可以捕获make给
出来的出错信息,然后你只要按C-x ` (注意是反单引号,在键盘左上角)就可
以直接跳到出错的那一行进行修改了。非常方便。

(global-set-key ‘[f12] ‘font-lock-mode)

打开/关闭font-lock-mode。有的时候彩色显示乱了,需要关闭/打开才能重新
变好。

(global-set-key "\C-xc" ‘kill-ring-save)

这个命令等于M-w(copy)。我习惯用C-x c。

;;;;;;;;;;;;;;;;DEFINE NEW PREFIX KEY;;;;;;;;;;;;;

(global-set-key [M-up] ‘beginning-of-buffer)

按住Meta同时按 up箭头就回到文件最开始,等于M-<

(global-set-key [M-down] ‘end-of-buffer)

等于M->

(global-set-key [kp-add] ‘enlarge-window) (global-set-key
[kp-subtract] ‘shrink-window)

kp-add是keypad add的意思。有的时候你有两个窗口(比如说在一边写R程序,一
边开了个R窗口调试)的时候希望调整光标所在窗口的大小就可以用这两个命令。
如果可以用鼠标(X,或者用了xterm-mouse-mode),可以直接用鼠标拉分隔行。
不过有个麻烦:这个keypad在putty下工作得很好,在家里的aterm就不work了。

(global-set-key [?\e prior] ‘scroll-other-window-down) (global-set-key
[?\e next] ‘scroll-other-window)

Meta 加pageup/pagedown可以翻另外一个窗口,在看帮助文件的时候很有用

下面一大段是通过emacs本身自带的设置命令然后让它存盘得到的文件。不要自己
去修改,如果想改,通过emacs的菜单或者M-x customize ….. 来设置,记得设
置完了要选择“save to .emacs file”。

;;;;;;;;;;;;;;;; (custom-set-faces ;; custom-set-faces was added by
Custom — don’t edit or cut/paste it!  ;; Your init file should
contain only one such instance.  ‘(default ((t (:stipple nil
:background nil :foreground "black" :inverse-video nil :box nil
:strike-through nil :overline nil :underline nil :slant normal :weight
normal :height 240 :width normal :family "adobe-courier"))))
‘(custom-invalid-face ((((class color)) (:background "red" :foreground
"white")))) ‘(custom-rogue-face ((((class color)) (:background "black"
:foreground "white")))) ‘(font-latex-math-face ((((class color)
(background dark)) (:foreground "red")))) ‘(font-latex-verbatim-face
((((class color) (background dark)) (:inherit fixed-pitch :foreground
"blue")))) ‘(fringe ((((class color) (background dark)) (:background
"white" :foreground "black")))) ‘(highlight ((((type tty) (class
color)) (:background "white")))) ‘(menu ((((type tty)) (:background
"black" :foreground "white" :inverse-video t))))
‘(widget-inactive-face ((((class grayscale color) (background dark))
(:background "black" :foreground "white")))))

(put ‘narrow-to-region ‘disabled nil) (custom-set-variables ;;
custom-set-variables was added by Custom — don’t edit or cut/paste
it!  ;; Your init file should contain only one such instance.  )

  1. 发表评论

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s

%d 博主赞过: