LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 33111|回复: 68

和兄弟姐妹们讨论和推广emacs

[复制链接]
发表于 2004-5-26 16:32:17 | 显示全部楼层 |阅读模式
hvj的讨论和推广emacs贴0:

算是抛砖引玉吧,我把自己的emacs经历和配置文件贴上来,并稍作一些讲解,提出一些疑问,和兄弟姐妹们讨论和推广一下这个好东东。

这贴先给一些链接吧。
http://www.gnus.org/software/emacs  GNU emacs的官方网站。
http://www.emacswiki.org Emacs用户大本营,有很多非常好的资料
http://learn.tsinghua.edu.cn/homepage/2001315450/emacs.html 我学emacs的初始地,在这里表示对网站作者王垠的感激。
http://learn.tsinghua.edu.cn/hom ... 0/emacs24/index.htm 我学emacs的主要教程,sir里好像有人要翻译,不知道翻译完没。
http://www.dotemacs.de/ emacs配置文件的集中营,不过感觉梢旧了些。
http://zhdotemacs.sourceforge.net/emacs/ Emacs 中文化指南,有很多适合咱们中国人使用的技巧。

注:
1,配置文件是在我的配置文件基础上加上比较详细的注解,注解之前都用;;注释掉了,也就是说可以拷过去直接用
2,由于我的每个配置文件开头都有time stamp(在第2帖中有讲解),在第一贴贴了这个时间戳,后面就不贴了。
3,我所用的elisp包在王垠的网站或emacswiki.org里应该能找到,实在不行,我们还有google。
4,为了保存已有缩进,一些代码引用使用php源码引用,语法显示有问题,请大家不要误会。
5,欢迎大家指正错误,讨论修改,一起提高Emacs应用水准。
 楼主| 发表于 2004-5-26 16:43:43 | 显示全部楼层
hvj的讨论和推广emacs贴1:

首先贴一下我得初始文件~/.emacs
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Hans Ve Joanphan's dotemacs file
;;; Last modified time
;;; Time-stamp: <hans 05/18/2004 12:01:12>
;;; Life is a box of chocalates,
;;;     you never know what you're gonna get.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;以上是我得time stamp,在后面将有详细讲解
;;设置你的全名和邮件,在发邮件时可以用到
(setq user-full-name "Hans Joanphan")
(setq user-mail-address "joanphan@citiz.com")
;;设置你的书签文件,默认是~/.emacs.bmk,我喜欢把有关emacs的文件尽量放在一个文件夹,所以就修改了。
(setq bookmark-default-file "~/.emacs.d/.emacs.bmk")
;;设置缩略词的文件?不大记得了
(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 "~/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")
;;由于我的配置文件很长,所以按照分类分别放在不同的文件里,方便管理
(load "hvj-basic-config")
(load "hvj-language")
(load "hvj-calendar")
(load "hvj-folding")
(load "hvj-ido")
(load "hvj-dictionary")
(load "hvj-function")
(load "hvj-mew")
(load "hvj-w3m")
(load "hvj-erc.el")
(load "hvj-dired")
(load "hvj-mode")
(load "hvj-wiki")
(load "hvj-other-elisp")
(load "hvj-key-bindings")

;;这个东西必须放在最后
;;desktop.el是一个可以保存你上次emacs关闭时的状态,下一次启动时恢复为上次关闭的状态。就和vmware的suspend一样。
;;因为我要使用sawfish-mode,wiki-mode,html-helper-mode,放在这里才能保证下次启动时能正确辨认文件需要的模式。
(load "desktop")
(desktop-load-default)
(desktop-read)


注:为安全起因,我修改了我的email地址。我的准确email地址在签名中有
 楼主| 发表于 2004-5-26 17:08:09 | 显示全部楼层
hvj的讨论和推广emacs贴2:

这次贴一下我hvj-basic-config.el的一部分,这里主要讲了颜色的设置,外观设置,备份设置、自动补全设置、time stamp设置以及时间显示设置。
;;颜色设置,其实有个color-theme.el可以将Emacs设置丰富多彩,非常漂亮,不过启动有些慢(我得机器不行),我只是选择了一些颜色设置。
;; 指针颜色设置为白色
(set-cursor-color "white")
;; 鼠标颜色设置为白色
(set-mouse-color "white")
;; 设置背景颜色和字体颜色
(set-foreground-color "white")
(set-background-color "darkblue")
;; 设置另外一些颜色:语法高亮显示的背景和主题,区域选择的背景和主题,二次选择的背景和选择
(set-face-foreground 'highlight "white")
(set-face-background 'highlight "blue")
(set-face-foreground 'region "cyan")
(set-face-background 'region "blue")
(set-face-foreground 'secondary-selection "skyblue")
(set-face-background 'secondary-selection "darkblue")
;;设置日历的一些颜色
(setq calendar-load-hook
      '(lambda ()
         (set-face-foreground 'diary-face   "skyblue")
         (set-face-background 'holiday-face "slate blue")
         (set-face-foreground 'holiday-face "white")))

;;外观设置
;;去掉工具栏
(tool-bar-mode nil)
;;去掉菜单栏,我将F10绑定为显示菜单栏,万一什么东西忘了,需要菜单栏了可以摁F10调出,再摁F10就去掉菜单
(menu-bar-mode nil)
;;不要滚动栏,现在都用滚轴鼠标了,可以不用滚动栏了
(scroll-bar-mode nil)

;;备份设置
;;emacs还有一个自动保存功能,默认在~/.emacs.d/auto-save-list里,这个非常有用,我这里没有改动,具体可以参见Sams teach yourself emacs in 24hours(我简称为sams24)
;;启用版本控制,即可以备份多次
(setq version-control t)
;;备份最原始的版本两次,记第一次编辑前的文档,和第二次编辑前的文档
(setq kept-old-versions 2)
;;备份最新的版本五次,理解同上
(setq kept-new-versions 5)
;;删掉不属于以上7中版本的版本
(setq delete-old-versions t)
;;设置备份文件的路径
(setq backup-directory-alist '(("." . "~/.emacs.tmp")))
;;备份设置方法,直接拷贝
(setq backup-by-copying t)

;;自动补全功能,这事从王垠的网站直接Copy过来的,引用一些他对此的说明
;;你可以设置以下 hippie-expand 的补全方式。它是一个优先列表, hippie-expand 会优先使用表最前面的函数来补全
;;这是说,首先使用当前的buffer补全,如果找不到,就到别的可见的窗口里寻找,如果还找不到,那么到所有打开的buffer去找,如果还……那么到kill-ring里,到文件名,到简称列表里,到list,…… 当前使用的匹配方式会在 echo 区域显示。
;;特别有意思的是 try-expand-line,它可以帮你补全整整一行文字。我很多时后有两行文字大致相同,只有几个字不一样,但是我懒得去拷贝粘贴以下。那么我就输入这行文字的前面几个字。然后多按几下 M-/ 就能得到那一行。
(global-set-key [(meta ?/)] 'hippie-expand)
(setq hippie-expand-try-functions-list
      '(try-expand-line
        try-expand-line-all-buffers
        try-expand-list
        try-expand-list-all-buffers
        try-expand-dabbrev
        try-expand-dabbrev-visible
        try-expand-dabbrev-all-buffers
        try-expand-dabbrev-from-kill
        try-complete-file-name
        try-complete-file-name-partially
        try-complete-lisp-symbol
        try-complete-lisp-symbol-partially
        try-expand-whole-kill))

;;时间戳设置(time-stamp),设定文档上次保存的信息
;;只要里在你得文档里有Time-stamp:的设置,就会自动保存时间戳
;;启用time-stamp
(setq time-stamp-active t)
;;去掉time-stamp的警告?
(setq time-stamp-warn-inactive t)
;;设置time-stamp的格式,我如下的格式所得的一个例子:<hans 05/18/2004 12:01:12>
(setq time-stamp-format "%:u %02m/%02d/%04y %02H:%02M:%02S")
;;将修改时间戳添加到保存文件的动作里。
(add-hook 'write-file-hooks 'time-stamp)

;;时间显示设置
;;启用时间显示设置,在minibuffer上面的那个杠上(忘了叫什么来着)
(display-time-mode 1)
;;时间使用24小时制
(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)
 楼主| 发表于 2004-5-26 17:24:18 | 显示全部楼层
hvj的讨论和推广emacs贴3:

这里继续帖我得hvj-basic-config.el,讲另外一些比较零碎的设置
;;启用minibuffer,好像是默认设置吧
(minibuffer-electric-default-mode 1)
;;启用部分补全功能,如输入M-x q r r相当于M-x query-replace-regexp
(partial-completion-mode 1)
;;在minibuffer里启用自动补全函数和变量
(icomplete-mode 1)
;;所有的问题用y/n方式,不用yes/no方式。有点懒,只想输入一个字母
(fset 'yes-or-no-p 'y-or-n-p)
;;允许minibuffer自由变化其大小(指宽度)
(setq resize-mini-windows t)
;;当寻找一个同名的文件,自动关联上那个文件?
(setq uniquify-buffer-name-style 'forward)
;;在emacs读man文档时,使用当前buffer
(setq Man-notify-method 'pushy)
;;鼠标自动避开指针,如当你输入的时候,指针到了鼠标的位置,鼠标有点挡住视线了
(mouse-avoidance-mode 'animate)
;;允许自动打开图片,如wiki里面
(auto-image-file-mode)
;;可以操作压缩文档
(auto-compression-mode 1)
;;在minibuffer上面可以显示列号
(column-number-mode t)
;;显示默认的文档的宽度,看起来比较舒服?
(setq default-fill-column 60)
;;指针不要闪,我得眼睛花了
(blink-cursor-mode -1)
(transient-mark-mode 1)
;;当指针到一个括号时,自动显示所匹配的另一个括号
(show-paren-mode 1)
;;是用滚轴鼠标
(mouse-wheel-mode t)
;;去掉烦人的警告铃声
(setq visible-bell nil)
;;滚动页面时比较舒服,不要整页的滚动
(setq scroll-step 1
      scroll-margin 3
      scroll-conservatively 10000)
;;设定句子结尾,主要是针对中文设置
(setq sentence-end "\\([&#161;&#163;&#163;&#161;&#163;&#191;]\\|&#161;&#173;&#161;&#173;\\|[.?!][]\"')}]*\\($\\|[ \t]\\)\\)[ \t\n]*")
(setq sentence-end-double-space nil)
;;去掉Emacs和gnus启动时的引导界面
(setq inhibit-startup-message t)
(setq gnus-inhibit-startup-message t)
;;当指针移到另一行,不要新增这一行?d
(setq next-line-add-newlines nil)
;;在文档最后自动插入空白一行,好像某些系统配置文件是需要这样的
(setq require-final-newline t)
(setq track-eol t)
;;使用C-k删掉指针到改行末的所有东西
(setq-default kill-whole-line t)
;;设定删除保存记录为200,可以方便以后无限恢复
(setq kill-ring-max 200)
;;增大使用查找函数和变量的寻找范围
(setq apropos-do-all t)
;;是用aspell程序作为Emacs的拼写检查成学
(setq-default ispell-program-name "aspell")
;;使用narrow功能时的一个设置
(put 'narrow-to-region 'disabled nil)
;;启动Emacs自动设置为两个窗口(上下各一个)
(split-window-vertically)
;;改变emacs标题栏的标题
(setq frame-title-format "%b@vj.org")
;;允许emacs和外部其他程序的粘贴
(setq x-select-enable-clipboard t)
 楼主| 发表于 2004-5-26 17:25:27 | 显示全部楼层
下次继续完成后面的...
发表于 2004-5-26 17:32:25 | 显示全部楼层
直接打包 下载
 楼主| 发表于 2004-5-26 17:35:44 | 显示全部楼层
我的配置文件里没有说明和讲解,我是现写的讲解和说明。
我是想作为一种教程放进来,还有我的emacs使用中也有一些问题,希望能和大家讨论一下。全部写完后会考虑打包的
后面大概还有15贴左右需要写,我还得忙一段时间。
发表于 2004-5-26 18:26:36 | 显示全部楼层
把你的dot emacs交出来,不然.........
 楼主| 发表于 2004-5-26 18:32:39 | 显示全部楼层
我正在整理,因为太多了,需要一定时间。
我的dotemacs没有注解,自己读起来都费解,我在这发布帖子会尽量讲解清楚的,兄弟给我一点时间
我觉得自个的配置文件还是有不少问题的,欢迎大家来讨论!
 楼主| 发表于 2004-5-26 18:49:37 | 显示全部楼层
hvj的讨论和推广emacs贴4:

这贴主要讲一下中文的设置,是我的配置文件hvj-language.el
我得Emacs中文配置由三部分组成:local设置,.Xdefault设置字体,hvj-language设置emacs环境。

我的locale设置很简单,如下:
export LANG=en_US
export LC_CTYPE=zh_CN


我的.Xdefaults中有关emacs的配置是:
Emacs.Font:fontset-global
Emacs.Fontset-0:-*-*-medium-r-*-*-14-*-*-*-*-*-fontset-global,\
ascii:-*-fixed-medium-r-*-*-14-*-*-*-*-*-iso8859-*,\
chinese-gb2312:-*-tangti-medium-r-normal-*-14-*-*-*-*-*-gb2312.1980-0,\
chinese-big5-1:-*-tangti-medium-r-*-*-14-*-*-*-*-*-big5-0,\
chinese-big5-2:-*-tangti-medium-r-*-*-14-*-*-*-*-*-big5-0, \
utf-8:-misc-fixed-medium-r-*-*-14-*-*-*-*-*-iso10646-1, \
mule-utf-8:-misc-fixed-*-r-*-*-14-*-*-*-*-*-iso10646-1, \
mule-unicode-0100-24ff:-misc-fixed-*-r-*-*-14-*-*-*-*-*-iso10646-1, \
korean-ksc5601:-*-*-medium-r-normal-*-20-*-*-*-*-*-ksc5601*-*, \
sjis:-*-*-medium-r-normal-*-20-*-*-*-*-*-jisx0208*-*



下面是我得hvj-language.el
;;emacs环境设置
;;整体环境设置
(set-language-environment 'Chinese-GB)
;;应该和输入有关系
(set-keyboard-coding-system 'chinese-iso-8bit-with-esc)
;;终端下emacs的中文设置?
(set-terminal-coding-system 'chinese-iso-8bit-with-esc)
;;文件保存时的编码设置
(set-buffer-file-coding-system 'chinese-iso-8bit-with-esc)
;;下面两天是emacs和其他程序互相复制/粘贴的设置
;;在帖3(hvj-basicconfig.el)的最后一行中也有相关的一个设定
(set-selection-coding-system 'chinese-iso-8bit-with-esc)
(set-clipboard-coding-system 'chinese-iso-8bit-with-esc)
;;什么设置?忘了?有些人没用下面这些
(modify-coding-system-alist 'process "*" 'chinese-iso-8bit-with-esc)
(setq default-process-coding-system '(chinese-iso-8bit-with-esc . chinese-iso-8bit-with-esc))
(setq-default pathname-coding-system 'chinese-iso-8bit-with-esc)

;;字体解码优先顺序
;;从王垠那拷过来的,不用怎么再改吧。
(setq font-encoding-alist
      (append '(("MuleTibetan-0" (tibetan . 0))
                ("GB2312" (chinese-gb2312 . 0))
                ("JISX0208" (japanese-jisx0208 . 0))
                ("JISX0212" (japanese-jisx0212 . 0))
                ("VISCII" (vietnamese-viscii-lower . 0))
                ("KSC5601" (korean-ksc5601 . 0))
                ("MuleArabic-0" (arabic-digit . 0))
                ("MuleArabic-1" (arabic-1-column . 0))
                ("MuleArabic-2" (arabic-2-column . 0))) font-encoding-alist))

一些其他的说明:
1,有些人使用gbk的locale,那么就需要安装mule-gbk扩展elisp包,我以前装过,配置不是很难。论坛里可以搜到,这次比较急,不再去搜了,下次在加到这贴里。
2,emacs目前对Unicode支持不是很好,虽然现在有mule-ucs包,我一直没用的很爽。对于Unicode解码的文件、email我都改用了别的工具。官方说emacs的下一版对unicode解码更好了,大家有兴趣可以去试用emacs-cvs版。
3,emacs在windows的中文设置,以及Xemacs在linux和Windows的设置我不清楚,没用过,不能保证这些方法能适用你们。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表