[原创]Emacs 常见问题及其解决方法。

Vim、Emacs配置和使用
duoxing
帖子: 122
注册时间: 2005-12-20 21:26

[原创]Emacs 常见问题及其解决方法。

#1

帖子 duoxing » 2006-04-22 13:45

在很多论坛里面看到很多兄弟在开始试用emacs的时候遇到很多的困难,很多问
题我也不知道看到过好次了,所以现在想把我使用过程中遇到的问题和解决方法
写出来和大家分享一下。

1. 第一个问题最多的可能就是在emacs中显示中文的问题了(也可能是中文输入
法在emacs中的问题)反正我们一个一个的来看嘛。

- 如果你的是Emacs21:

首先确定你安装了mule-ucs这个包,然后你需要加入下面的代码:

(set-language-environment 'Chinese-GB)
(set-keyboard-coding-system 'euc-cn)
(set-clipboard-coding-system 'euc-cn)
(set-clipboard-coding-system 'cn-gb-2312)
(set-terminal-coding-system 'euc-cn)
(set-buffer-file-coding-system 'euc-cn)
(set-selection-coding-system 'euc-cn)
;(set-selection-coding-system 'chinese-iso-8bit-with-esc)
(set-selection-coding-system 'cn-gb-2312)
(set-default-coding-systems 'euc-cn)
(setq locale-coding-system 'euc-cn)
(modify-coding-system-alist 'process "*" 'euc-cn)
(setq default-process-coding-system
'(euc-cn . euc-cn))
(setq-default pathname-coding-system 'euc-cn)

- 如果你的是Emacs22和23就不需要了,另外只是Emacs22同样也需要安装
mule-ucs,Emacs23就不需要了。

2. Emacs中使用fcitx或者scim。

首先安装这两个输入法和配置方面的我就不说了,如果还是不会的可以去我的
blog看看:http://www.cduhacker.com/duoxing/?action=show&id=4

另外还有一个地方比较重要的就是/etc/environment的设置,虽然Ubuntu中文帮
助文档里面有,但是局限性太强了,不是那么自由,比如在纯英文环境下就无法
使用fcitx,并且最初的时候我就是用的那个出了很多莫名其妙的问题,所以就
自己写了一个比较通用的,在任何的locale下面都可以很正常的显示和使用任何
输入法,这里仅供参考。(测试环境:Ubuntu 5.10/6.06 , Debian 3.1
stable/testing,)

duoxing@smartfish:~$ cat /etc/environment
LANGUAGE="en_CN:en_US:en_GB:en"

LANG=en_US

LC_CTYPE=zh_CN.GBK
duoxing@smartfish:~$

通过上面的设置后一般都没有什么问题了,当然也有很多朋友遇到的问题就是使
用默认的调出输入法的组合键 ctrl+space 显示 mark 的问题,这个也好办,我
们禁止这个组合键在emacs中的使用就是了:(global-set-key (kbd "C-SPC")
'nil) 这样设置后应该就没有问题了。

3. 当然Emacs里面能正常显示中文字体了也不一定显示的字体就很让我们满意,
比如在Ubuntu里面,Emacs中的字体默认就是楷体的,但是这个字体在emacs里面
显示出来真的是太难看了,于是我决定使用simsun的字体,当然,你也可以选择
使用其它的字体,只是在相关地方设置就是了,这里我给出我的字体设置,如果
你的系统是debian,那就恭喜你了,默认的字体就很好看了。

duoxing@smartfish:~$cat .Xdefaults
Emacs.Font: fontset-song
Emacs.FontsetList: song kai hei lucida
Emacs.Fontset-0:-adobe-courier-medium-r-*-*-14-*-*-*-*-*-fontset-song,\
chinese-gb2312:-*-simsun-medium-r-*--16-*-*-*-*-*-gbk-0,\
mule-unicode-0100-24ff:-misc-fixed-medium-r-normal--16-*-*-*-*-*-iso10646-1,\
korean-ksc5601:-*-medium-r-normal-*-16-*-ksc5601*-*,
chinese-cns11643-5:-*-simsun-medium-r-*--16-*-*-*-*-*-gbk-0,\
chinese-cns11643-6:-*-simsun-medium-r-*--16-*-*-*-*-*-gbk-0,\
chinese-cns11643-7:-*-simsun-medium-r-*--16-*-*-*-*-*-gbk-0

Emacs.Fontset-1:-adobe-courier-medium-r-*-*-14-*-*-*-*-*-fontset-kai,\
chinese-gb2312:-*-simkai-medium-r-*--16-*-*-*-*-*-gbk-0,\
mule-unicode-0100-24ff:-misc-fixed-medium-r-normal--16-*-*-*-*-*-iso10646-1

Emacs.Fontset-2:-adobe-courier-medium-r-*-*-14-*-*-*-*-*-fontset-hei,\
chinese-gb2312:-*-simhei-medium-r-*--16-*-*-*-*-*-gbk-0,\
mule-unicode-0100-24ff:-misc-fixed-medium-r-normal--16-*-*-*-*-*-iso10646-1

Emacs.Fontset-3:-adobe-courier-medium-r-*-*-14-*-*-*-*-*-fontset-lucida,\
ascii:-b&h-lucidatypewriter-medium-r-*-*-12-*-*-*-*-*-iso8859-1,\
chinese-gb2312:-*-simsun-medium-r-*--16-*-*-*-*-*-gbk-0,\
mule-unicode-0100-24ff:-misc-fixed-medium-r-normal--16-*-*-*-*-*-iso10646-1

分开定义的中英文字体,我比较喜欢这样的等宽字体,需要注意的是如果你必须
要安装了simsun的字体(使用:xlsfonts |grep simsun 可以查看你是否安装了
这个字体)才可以正常的显示。可以去下面的链接看看效
果图。http://www.cduhacker.com/duoxing/?action=show&id=89

4. mew的设置。

这个部分我的是用的一个邮箱的,设置也偏向于实用就是了,所以设置的很简洁


(autoload 'mew "mew" nil t)
(autoload 'mew-send "mew" nil t)
(setq mew-use-cached-passwd t)
(setq mew-pop-size 0)
(setq mew-pop-delete nil)
(setq mew-config-alist
'(("default"
("name" . "多行")
("user" . "laiwei2010")
("mail-domain" . "163.com")
("pop-server" . "pop3.163.com")
("pop-port" . "110")
("pop-user" . "laiwei2010")
("pop-auth" . pass)
("smtp-server" . "smtp.163.com")
("smtp-port" . "25")
("smtp-user" . "laiwei2010")
("smtp-auth-list" . ("CRAM-MD5" "LOGIN" "PLAIN")))))

根据我的模板,填写你的信息就可以了。

5. 设置gnus阅读新闻组。很多地方可能不是对没个人都实用,根据自己的情况
自己去改吧。

;用户资料设定
;(setq user-full-name "duoxing") ;;外发邮件采用这个名字
;(setq user-mail-address "duoxing@126.com");;外发的邮件采用这个地址
;设置默认的新闻服务器
;(setq gnus-select-method '(nntp "localhost"))
;(setq gnus-select-method '(nntp "news.cn99.com"))
(setq gnus-select-method '(nntp "news.cn99.com")
gnus-secondary-select-methods
'((nnml "")
;; (nntp "news.individual.net")
;;(nntp "news.gmane.org")
(nntp "news.newsfan.net")
(nntp "news.yaako.com")))



;;设置显示格式
;(setq gnus-group-line-format "%m%M%5N/%-5R %10G: %D\n"
; gnus-topic-line-format "%i%n %A (%G) %v\n"
; gnus-summary-line-format ":%U%R%B%s%-60=%-20,20f|%4L |\n")

(setq gnus-group-line-format "%m%M%L%5N/%-5R %25G: %D\n"
gnus-topic-line-format "%i%n %A (%G) %v\n"
gnus-summary-line-format ":%U%R%B%s%-60=%-20,20f|%4L |\n")

;;设置Article buffer顶部显示的头信息
(setq gnus-visible-headers
"^\\(From:\\|Subject:\\|Date:\\|Followup-To:\\|X-Newsreader:\\|User-Agent:\\|X-Mailer:\\)")

(if window-system
(setq gnus-sum-thread-tree-root ">>"
gnus-sum-thread-tree-single-indent " >"
gnus-sum-thread-tree-leaf-with-other "+-> "
gnus-sum-thread-tree-indent " "
gnus-sum-thread-tree-vertical "|"
gnus-sum-thread-tree-single-leaf "`-> "
gnus-sum-thread-tree-false-root "~>"))



;;改变阅读新闻时窗口的布局"1.0"表示占满剩余空间
;上下各一个窗口
(gnus-add-configuration '(article (vertical 1.0 (summary .35 point) (article 1.0))))
;(gnus-add-configuration '(article (horizontal 1.0 (summary .30 point) (article 1.0))))
;(gnus-add-configuration
; '(article
; (horizontal 1.0
; (vertical 25
; (group 1.0))
; (vertical 1.0
; (summary 0.25 point)
; (article 1.0)))))
;(gnus-add-configuration
; '(summary
; (horizontal 1.0
; (vertical 25
; (group 1.0))
; (vertical 1.0
; (summary 1.0 point)))))



;;如果开启了主题视图,只看未读邮件是令人讨厌的
(setq gnus-fetch-old-headers 'some)
;;下载所有文章
(setq gnus-fetch-old-headers t)
;;自动换行功能
(add-hook 'message-mode-hook
(lambda ()
(setq fill-column 72);;这里的72是等一行到了72个字符后开始换行
(turn-on-auto-fill)))
(setq message-cite-function 'message-cite-original-without-signature)


;;设置浏览器显示HTML邮件(w3,w3m,links,lynx,html2text)
(setq mm-text-html-renderer 'w3m)

;;排序
(setq gnus-thread-sort-functions
'(
(not gnus-thread-sort-by-date)
(not gnus-thread-sort-by-number)
))


;;同步所有组并发布草稿中的邮件和文章

;(add-hook 'gnus-group-mode-hook
; (lambda ()
; (define-key gnus-agent-group-mode-map "o" 'my-gnus-get-new-message)))
;(defun my-gnus-get-new-message ()
; (interactive)
; (gnus-agent-toggle-plugged t)
; (gnus-group-get-new-news);; check news, get mail
; (gnus-agent-fetch-session);; fetch news
; (gnus-group-send-queue);; send mail/news
; (gnus-agent-toggle-plugged nil)
; (message "gnus-agent: mail/news send/fetch Finished. "))

;;自动同步

(setq gnus-asynchronous t)
;; Custome cite-funcition
(setq message-cite-function 'message-cite-original-without-signature)

(setq gnus-treat-display-smileys t)
(setq gnus-summary-display-arrow nil)
(setq gnus-confirm-mail-reply-to-news t)
(setq gnus-agent-go-online t)
(setq gnus-interactive-exit nil)
(setq gnus-read-active-file nil)
(setq gnus-read-newsrc-file nil)
(setq gnus-save-newsrc-file nil)
(setq gnus-save-killed-list nil)

(setq gnus-agent-short-article 500)
(setq gnus-agent-long-article 1000)
;;打开gnus的cache功能,*保存帖子 Meta-*从缓存中删除
;;查看缓存中的帖子,在summary buffer中 按 Y c
(setq gnus-use-cache 'passive)

;; 新闻组分组
;; 有时订阅了很多新闻组,堆在一起不好管理。这个功能可以创建目录来分层管理这些新闻组。
;; group topic
(add-hook 'gnus-group-mode-hook 'gnus-topic-mode)
;; 现在可以在group buffer里面M-x gnus-topic-create-topic来创建一个"topic"
;; 然后将某个新闻组或者其他topic给C-k掉,再移动到你创建的topic下C-y,就可以
;; 将它们收到这个topic下
;; topic的好处除了分层之外,还有就是可以将不常看的topic折叠起来,不要显示。
;; 就像下面这样
;;
;; [ Gnus -- 0 ]
;; [ MAIL -- 3 ]...
;; [ NEWS -- 0 ]
;; [ emacs -- 0 ]
;; *: nntp+binghe.6600.org: gnu.emacs.help
;; *: nntp+binghe.6600.org:gnu.emacs.gnus
;; [人文与社会 -- 0]
;; [语言 -- 0
;; *: nntp+news.newsfan.net:教育.就业.外语.日语
;; *: nntp+news.newsfan.net:教育.就业.外语.英语
;; [ misc -- 0 ]...
;;
;; 参考gnus info -> Group Buffer -> Group Topics


;;标识自己的文章

(defun message-make-message-id()
(concat "<"(message-unique-id)"@meatball.nudt.edu.cn>"))
(setq gnus-score-interactive-default-score 400)

(require 'gnus-sum)
(defface dz-gnus-own-posting-face nil
"Use this face to display own postings in Summary Buffer")
(copy-face 'gnus-summary-high-unread-face 'dz-gnus-own-posting-face)
(set-face-foreground 'dz-gnus-own-posting-face "yellow")

(defface dz-gnus-direct-fup-face nil
"Use this face to display direct fups to my postings.")
(copy-face 'gnus-summary-high-unread-face 'dz-gnus-direct-fup-face)
(set-face-foreground 'dz-gnus-direct-fup-face "yellow")

(defface dz-gnus-indirect-fup-face nil
"Use this face to display indirect fups to my postings")
(copy-face 'gnus-summary-high-unread-face 'dz-gnus-indirect-fup-face)
(set-face-foreground 'dz-gnus-indirect-fup-face "yellow")

(add-to-list 'gnus-summary-highlight
'((and (> score 8500) (eq mark gnus-unread-mark)) . dz-gnus-own-posting-face))

(add-to-list 'gnus-summary-highlight
'((and (>= 8500 score) (>= score 7500) (eq mark gnus-unread-mark)) . dz-gnus-direct-fup-face))

(add-to-list 'gnus-summary-highlight
'((and (>= 7499 score) (>= score 6500) (eq mark gnus-unread-mark)) . dz-gnus-indirect-fup-face))



;设置邮件服务器
;(setq mail-sources
; '((pop :server "pop.163.com"
; :user "mendouer"
; :port "pop3"
; :password ".")))
(setq pop3-leave-mail-on-server t)
;;设置多个pop邮箱
; (setq mail-sources '(
; (pop :server "pop.163.com" :user "william_xuuu" :password "dolemi")
; (pop :server "pop3.sohu.com" :user "william_xuuu" :password "dolemi")))


;邮件存放方式
(setq gnus-secondary-select-methods '((nnfolder "")))
(setq user-full-name "duoxing") ;;外发的邮件采用这个名字
(setq user-mail-address "duoxing@126.com") ;;外发的邮件采用这个地址
(setq smtpmail-auth-credentials
'(("smtp.163.com" ;; SMTP服务器
25
"mendouer"
"")))
(setq smtpmail-default-smtp-server "smtp.163.com")
(setq smtpmail-smtp-server "smtp.163.com")
(setq message-send-mail-function 'smtpmail-send-it)
;中文设定
(setq gnus-default-charset 'chinese-iso-8bit
gnus-group-name-charset-group-alist '((".*" . chinese-iso-8bit))
gnus-summary-show-article-charset-alist
'((1 . chinese-iso-8bit)
(2 . gbk)
(3 . big5)
(4 . utf-8))
gnus-newsgroup-ignored-charsets
'(unknown-8bit x-unknown iso-8859-1))
;有些用web方式发出的邮件里有html,加入下面的设置,只看其中的plain text部分
(eval-after-load "mm-decode"
'(progn
(add-to-list 'mm-discouraged-alternatives "text/html")
(add-to-list 'mm-discouraged-alternatives "text/richtext")))

;现在我们可以选择几个自己喜欢的新闻组,作为默认的新闻组
(setq gnus-default-subscribed-newsgroups
'("gnu.emacs.help"
"cn.comp.os.linux"
"comp.os.linux.announce"
"comp.os.linux.development.apps"
"comp.os.linux.development.system"
"comp.os.linux.misc"
"comp.os.linux.answers"))


;邮件分类
(setq nnmail-split-methods
'(("mail.163.com" "^From:.*163.com")
("mail.misc" "")))
;保存自己发送的邮件
(setq gnus-message-archive-group
'((if (message-news-p)
"nnfolder:mail.sent.news"
"nnfolder:mail.sent.mail")))
;;~/.newsrc gnus保留这个完全是为了其他的newreader。如果不适用,完全可以删除。
;;并且设置
(setq gnus-read-newsrc-file nil
gnus-save-newsrc-file nil)


暂时这次就整理到这里吧,其它还有很多,比如emms的设置,程序设计语言
模式的高亮显示的问题,以后在慢慢整理出来嘛。
附件
Emacs显示
Emacs显示
头像
Tenyears
帖子: 2245
注册时间: 2005-06-30 15:46
来自: 成都

#2

帖子 Tenyears » 2006-04-22 14:49

先顶一下
Humanity to others // 己所不欲,勿施与人
Laptop: ThinkPad X220 --- Win7 Home / Ubuntu 12.04
Desktop: Win7/Ubuntu 12.04
Server: Ubuntu12.04
moonchild
帖子: 116
注册时间: 2005-12-25 20:44

#3

帖子 moonchild » 2006-04-23 9:28

好文啊好文
alantiger
帖子: 15
注册时间: 2006-04-13 16:17

#4

帖子 alantiger » 2006-04-29 9:17

高手啊
看了很有收获
多谢
duoxing
帖子: 122
注册时间: 2005-12-20 21:26

#5

帖子 duoxing » 2006-05-13 15:37

更多
上次由 duoxing 在 2022-04-17 11:36,总共编辑 1 次。
moonchild
帖子: 116
注册时间: 2005-12-25 20:44

#6

帖子 moonchild » 2006-05-17 21:56

simsun字体怎么装啊??

从win拷过来??
duoxing
帖子: 122
注册时间: 2005-12-20 21:26

#7

帖子 duoxing » 2006-05-18 15:46

安装simsun至少有两种方法,一种就是直接从windows下面拷贝,但是这样的安装方式后字体不一定能在emacs里面使用,需要设置,但是也比较麻烦,因为emacs用的是核心字体,还有一个方法更简单的就是安装simsun的一个deb包,安装好了用xlsfonts |grep simsun一般就能找到了 ,然后就可以在emacs里面使用了,拷贝上面我发的那段代码就行了,效果图上面也能看到。
moonchild
帖子: 116
注册时间: 2005-12-25 20:44

#8

帖子 moonchild » 2006-05-19 20:59


谢谢楼上的快速回复

哪有simsun的deb包啊??

源里查simsun没结果啊

ps,那效果图可真好看啊

我也要。。。。。。。

duoxing
帖子: 122
注册时间: 2005-12-20 21:26

#9

帖子 duoxing » 2006-05-20 22:19

我的simsun的deb包是在我们学校下的,外网不清楚什么地方可以下,你多找几个源看!
moonchild
帖子: 116
注册时间: 2005-12-25 20:44

#10

帖子 moonchild » 2006-05-22 13:29

我也是教育网滴

能说说你们学校的源么

谢谢
头像
yangcheng
帖子: 498
注册时间: 2005-09-27 18:24
来自: 杭州

#11

帖子 yangcheng » 2006-05-28 13:57

emacs 22 23哪里有deb包?
duoxing
帖子: 122
注册时间: 2005-12-20 21:26

#12

帖子 duoxing » 2006-05-29 12:23

TO moonchild:我学校是电子科技大学,具体的源好象是内网的。

emacs 22 23 浙江大学和中科大都有deb包。
moonchild
帖子: 116
注册时间: 2005-12-25 20:44

#13

帖子 moonchild » 2006-05-30 11:09

thanks

archerC
帖子: 19
注册时间: 2006-06-13 23:38

#14

帖子 archerC » 2006-06-13 23:41

中科大的源里有么?没找到啊
我用的是breezy版的ubuntu
duoxing 写了:TO moonchild:我学校是电子科技大学,具体的源好象是内网的。

emacs 22 23 浙江大学和中科大都有deb包。
sybase2008
帖子: 109
注册时间: 2006-01-23 16:41

#15

帖子 sybase2008 » 2006-06-24 8:06

lz,我用的是ubuntu510,按照你这个改的
duoxing@smartfish:~$ cat /etc/environment
LANGUAGE="en_CN:en_US:en_GB:en"

LANG=en_US

LC_CTYPE=zh_CN.GBK

用C-space可以调用scim,但是scim是英文/欧洲,还是只能输入英文阿!
回复