您的位置:首页 > Web前端

Emacs 常见问题及其解决方法

2006-09-09 18:25 591 查看
在很多论坛里面看到很多兄弟在开始试用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-

)
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的设置,程序设计语言
模式的高亮显示的问题,以后在慢慢整理出来嘛。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息