emacs,中文,中文输入,复制粘贴

(~/.Xresources通常是传送到 xrdb 以加载 X 资源数据库的文件的名称如果没有就创建这个文件)

左键选中,中键粘贴.

#####################################################

 http://xumingming.sinaapp.com/819/emacs-cn-solution/

作者: xumingming | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明
网址: http://xumingming.sinaapp.com/819/emacs-cn-solution/

 

对于中文用户来说,如何在emacs里面输入显示中文算是个不小的门槛,虽然网上有很多教程,但是有时候你按照教程来,问题还是依旧。比如网上教程都会让你在.emacs文件里面添加下面一段,然后“一切都搞定了

01
02
03
04
05
06
07
08
09
10
(set-language-environment 'Chinese-GB)
(set-keyboard-coding-system 'euc-cn)
(set-clipboard-coding-system 'euc-cn)
(set-terminal-coding-system 'euc-cn)
(set-buffer-file-coding-system 'euc-cn)
(set-selection-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)

但是我用了这个就是不行,后来我发现可能大部分同学用的系统是中文的,我的是英文的,而英文系统的默认编码是utf-8所以我换成了下面的才好使

01
02
03
04
05
06
07
08
09
10
(set-language-environment 'utf-8)
(set-keyboard-coding-system 'utf-8)
(set-clipboard-coding-system 'euc-cn)
(set-terminal-coding-system 'utf-8)
(set-buffer-file-coding-system 'euc-cn)
(set-selection-coding-system 'euc-cn)
(modify-coding-system-alist 'process "*" 'utf-8)
(setq default-process-coding-system
            '(euc-cn . euc-cn))
(setq-default pathname-coding-system 'utf-8)

我还遇到过的另一个跟中文相关的问题就是刚开始输入不了中文 — 用CTRL + SPACE怎么也调不出我的ibus输入法,后来经人指点才知道在英文系统下、并且使用了GUI版本的emacs的话CTRL + SPACE被绑定到Mark Set这个命令上去了,解决的办法有两个:

  • 安装ibus-el, 这样你就可以在emacs中调用到ibus了。
  • 使用terminal版本的emacs: emacs -nw

希望对其它使用emacs的同学有用。

 ================

 http://baohaojun.github.io/blog/2012/12/19/perfect-emacs-chinese-font.html

狠狠地折腾了一把Emacs中文字体

1 Emacs中文字体的最基本问题

从23版开始,Emacs的中文显示可以说很轻松就可以基本解决。比如网上这位 强者(强是他的名字) 的配置方法,可以自动适配当前机器上已有的中文字体,有好的就用好的,没 有就将就一点。我最近也把他的配置抄过来了。

但这么一抄抄出问题来了(其实问题以前也一直存在,但折腾一开始就停不下来,必须把问题解决为止。这是身为Emacs狂粉儿必须付的代价?)。

2 等高还是等宽?

我以前的配置一直都是等高。估计大部分同学的选择是等宽。其实它们都各有缺点。

2.1 等宽不等高的问题

我用的是自己写的输入法SDIM,跟其他Emacs自带的输入法一样,它的候选词是在 echo area里显示的,如果不等高的话,echo area的高度会不断跳动,在上下两 个窗口的时候,第二个窗口中的输入会很痛苦:echo area的高度变化会导致第二 窗口的位置也发生变化,从而产生抖动,眼睛吃不消。

2.2 等高不等宽的问题

org-mode里的中英文混排、尤其是在表格中,如果不选等宽(指的是一个中文字 符与两个英文字符等宽),表格就没法看了。邮件程序gnus的排版也会大受影响, 导致不够美观。

2.3 等高或者等宽共有的问题

不管你选的是等高还是等宽,只要你选,估计在放大、缩小的时候( C-x C-+C-x C-- ),英文可以缩放,中文不会;你用 put-text-property 等都 只会对英文有效,中文无效!搞什么嘛!除非你不选,这样出来的结果可能既不 等高也不等宽,从而表格排版问题和输入抖动问题同时存在,囧死算了……

3 解决的方法

问题的关键出在下面的 :size 参数。以我的英文字体为Monaco-14为例,中文 字体为 Microsoft Yahei 为例,如果我要等高的话,我需要把 :size 设为16, 如果我要等宽的话,要设为一个较小的值。

(set-fontset-font t 'han (font-spec :family "Microsoft Yahei" :size 16)

但只要你一设,等高还是等宽你只能选一个,附加赠送上面说的缩放的问题。如 果不设,则中文字体跟英文字体的size保持一致,也是14,根据不同中文字体可 能既不等高又不等宽。

解决的方法是不设 :size ,而是修改另一个变量:

(setq face-font-rescale-alist '(("Microsoft Yahei" . 1.2) ("WenQuanYi Zen Hei" . 1.2)))

并且一定要重启Emacs(见 这个坑爹的bug ,浪费我N多时间,都准备上gdb了)!

改完之后由于缩放对中文也有效,我只要把输入法的中文字体设小一点就可以了。见图:

perfect-emacs-chinese-font.png

配置脚本见 github

另外,这个设置在Windows上也可以用,但是好像不是很可靠(我见到它有时候不 起作用,不明白怎么回事),并且在我的Win7系统上必须把 微软雅黑 给加到 face-font-rescale-alist 里去(可以用 C-u C-x = 来看当前汉字是用什么字体显示的,从而决定应该在这个变量里加什么。另一个有用的函数是 describe-fontset ):

(setq face-font-rescale-alist '(("微软雅黑" . 1.2) ("Microsoft Yahei" . 1.2) ("WenQuanYi Zen Hei" . 1.2)))

见图:

perfect-emacs-chinese-font-win7.png

DISQUS!

 

 

===============

 http://wwq0327.github.io/blog/2012/03/01/gentoo-emacs-fcitx/

终于搞定了emacs下的fcitx中文输入,一个大问题解决掉了,至于如何安装成功的,我自己也说不清楚了,修过的地方有xorg.conf,还安装了新的字体,font-adobe-100dpi还font-adobe-75dpi,新在HOME中,新建了一个.profile文件,内容:

1
export LC_ALL="zh_CN.UTF-8"

如果这句起了作用的话,我就有些不明白了,我在locale.gen中是设置了这一项的,而自己的locale显示是这样的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
LANG=zh_CN.UTF-8
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=zh_CN.UTF-8

安装完这些后,重启动了一次,然后一切就OK了。另外发现扩展包不是自己所需要的那么多,我平时是将emacs插件放到.emacs.d这个目录中的,在github.com创建了一个专门用来存放自己配置文件的仓库,有修改就同步一次,然后push到github,省得到处找插件。

===============

 http://www.btsmth.com/show_topic.php?en_name=Emacs&gid=93744

环境变量,如果不想改其它程序和 shell 的环境变量在,启动时专给 emacs/emacsclient 加上即可,比如:

$ LC_CTYPE=zh_CN XMODIFIERS="@im=fcitx" emacs --daemon
$ LC_CTYPE=zh_CN XMODIFIERS="@im=fcitx" emacsclient

可以把这两个命令做成 alias 或者脚本放在自己方便的地方。

不是在locales里设,在 shell 里可以 export,或者执行时写在命令前面,象我前面示范的那样。

如果写 shell 脚本的话,文件里是这样:

#!/bin/sh
LC_CTYPE=zh_CN XMODIFIERS="@im=fcitx" emacs --daemon

把这个保存为 edaemon.sh

另一个用来启动  emacsclient

#!/bin/sh
LC_CTYPE=zh_CN XMODIFIERS="@im=fcitx" emacsclient -c -n

把这个保存为 eclient.sh

然后确定这两个脚本可执行,打开一个终端窗口,切换到脚本保存的目录:
chmod +x edaemon.sh eclient.sh

然后先执行第一个脚本,再执行第二个脚本。

http://www.zhengyuanhang.com/article/183.html

我目前的系统是archlinux,locale是en_US.UTF-8,在emacs中弹不出来fcitx。

首先,本来CTRL+SPACE就是一个有意义的键,但是我用不上,于是把它给禁用了:

(global-set-key (kbd "C-SPC") nil)

但是,现在会提示C-SPC未定义,这就是因为我的locale的问题了。于是找到下面的方法:

修改~/.profile(我干脆修改/etc/profile),加上:

export LC_CTYPE="zh_CN.UTF-8"

重启emacs(有server记得关掉server),于是可以输中文了!

========

http://forum.ubuntu.org.cn/viewtopic.php?t=212467&f=17#p2743210

原贴名:Emacs中文菜单汉化包deb下载(不必修改 ~/.emacs文件就能显示中文界面)
emacs-locale-zh-cn .deb
2013-5-22 更新:製作并上傳繁體中文語言包(共三種軟體包格式):
適用于: Emacs 22.3-24.3. 軟體包格式說明:
* (.deb) for Debian/Ubuntu/
* (.tar.gz) for Linux/BSD/Unix
* (.zip) for Windows/

https://sourceforge.net/projects/emacsl ... ale-zh-cn/
附件:
emacs-locale-zh-tw.jpg
emacs-locale-zh-tw.jpg [ 87.37 KiB | 被浏览 649 次 ]


2013-4-7 更新:
上传附件到 https://sourceforge.net/projects/emacsl ... cale-zh-cn

分身链接:
http://www.mirrorservice.org/sites/down ... ale-zh-cn/
引用:
Emacs 简体中文汉化包及菜单翻译开发包下载
更新日期:2013-01-09
详细更新记录见 12 楼

说明:
emacs-locale-zh-cn : Emacs 简体中文汉化包
emacs-locale-dev :Emacs 菜单翻译开发包

发送主题为"emacs-locale"的电子邮件到 emacs-locale@qq.com ,
即可获得下载地址(附件已上传到 sourceforge)。


* 文件101 (DEB格式):
文件名: emacs-locale-zh-cn_1:22.3-24.3-1~careone14_all.deb
适用于: Emacs 22.3-24.3 for Ubuntu/Debian
说明:Emacs 简体中文汉化包
更新日期:2013.1.8
文件大小:3.9 M
已下载 次(2013.1.8 -- ?)

----------------

* 文件102 (tar.gz 格式):
文件名: emacs-locale-zh-cn_1:22.3-24.3-1~careone14_all.tar.gz
适用于: Emacs 22.3-24.3 for Unix/Linux/BSD
说明:Emacs 简体中文汉化包
更新日期:2013.1.8
文件大小:3.9 M
已下载 次(2013.1.8 -- ?)

----------------

* 文件103 (.zip 格式):
文件名: emacs-locale-zh-cn_1:22.3-24.3-1~careone14_windows.zip
适用于: Emacs 22.3-24.3 for Windows
说明:Emacs 简体中文汉化包
更新日期:2013.1.8
文件大小:约 4 M
已下载 次(2013.1.8 -- ?)

----------------

以下文件为开发包:

注:开发包仅供开发者翻译 Emacs 菜单为其它语言(如繁体中文等),
或对其它英文版的.el文件和插件进行翻译补充。普通用户不需要下载!

* 文件201 (开发包,deb 格式):
文件名:emacs-locale-dev_1:22.3-24.3-1~careone14_all.deb
适用于: Emacs 22.3-24.3 for Ubuntu/Debian
说明:Emacs 菜单翻译开发包
更新日期:2013.1.8
文件大小:82.3 K
下载地址: https://sourceforge.net/projects/emacsl ... ocale-dev/
已下载 次(2013.1.8 -- ?)
附件:
文件注释: 开发包(成品)
emacs-locale-dev_1_22.3-24.3-1~careone14_all.deb [82.26 KiB]
被下载 25 次

附件:
文件注释: 开发包,半成品(无法正常使用,仅供bash和lisp编程高手参考和改良代码。待功能完成后,再正式发布)
emacs-locale-dev_1.16beta_all.deb [95.84 KiB]
被下载 10 次
----------------

* 文件202 (开发包,tar.gz 格式):
文件名: emacs-locale-dev_1:22.3-24.3-1~careone14_all.tar.gz
适用于: Emacs 22.3-24.3 for Unix/Linux/BSD
说明:Emacs 菜单翻译开发包
更新日期:2013.1.8
文件大小: 78.7 K
下载地址: https://sourceforge.net/projects/emacsl ... ocale-dev/
已下载 次(2013.1.8 -- ?)
附件:
文件注释: 开发包(成品)
emacs-locale-dev_1_22.3-24.3-1~careone14_all.tar.gz [78.66 KiB]
被下载 16 次

----------------

引用:
2013-01-10

emacs-locale Tips

* 如何使用 emacs-locale ?

先下载并安装 emacs-locale-zh-cn.deb (或 .tar.gz).

** 请运行 emacs-locale.zh_CN -h 来查看详细功能。

** 还可以运行 emacs-locale.zh_CN --extra 来查看额外的附加功能。

* 如何实现不同用户使用不同语言的 Emacs 菜单界面?
方法(以 Emacs 24.x 为例):
1.下载并安装 emacs-locale-zh-cn.deb (或 .tar.gz).
安装后所有用户默认界面为简体中文(当前汉化包支持 Emacs 22.3-24.3);

2.以 root 用户身份,将菜单从简体中文重置为英文界面
(-g 参数对所有用户有效);
sudo emacs-locale.zh_CN --global-reset 24

3.以普通用户身份,将菜单设为简体中文(-u 参数仅对当前用户有效);
emacs-locale.zh_CN -u 24 zh_CN

4.以普通用户身份,将菜单设为繁体中文(当前暂时未对繁体中文实现翻译);
如果有人翻译了繁体中文,这个软件包也许应叫做 emacs-locale-zh-tw.deb
emacs-locale.zh_CN -u 24 zh_TW

5.如果以后有人翻译了其它语言包,可以用上述命令随意切换为任意语言。

附件:
emacs-locale-zh-cn.png
emacs-locale-zh-cn.png [ 38.09 KiB | 被浏览 15177 次 ]



 ==================================

http://forum.ubuntu.org.cn/viewtopic.php?f=155&t=268292

 发现即使修改了/etc/gtk-2.0/gtk.immodules
fcitx也只有在中文或者美国环境(en_US.UTF-8)环境下才能激活.
连en_AU.UTF-8都不行, 更不要说其他的环境如德文, 日文.
歧视呀! :em34

弄了很久, 终于找到了解决方法.
先关闭fcitx

代码:
pkill fcitx


用ghex(16进制编辑器)打开/usr/bin/fcitx

代码:
sudo ghex /usr/bin/fcitx


搜索GB找到了如下字符串

引用:
zh_CN.GB18030,zh_CN.GB2312,zh_CN,zh_CN.GBK,zh_CN.UTF-8,zh_CN.UTF8,en_US.UTF-8,en_US.UTF8

 

附件:
Screenshot-fcitx - GHex.png
Screenshot-fcitx - GHex.png [ 76.69 KiB | 被浏览 1272 次 ]


在"编辑"菜单里选替代,
比如你要用en_HK环境
就把"en_US"替代成"en_HK"就行了, 然后保存.(注意大小写)
然后打开fcitx就行了.

 

 

 

 

 

################################################################################

https://wiki.archlinux.org/index.php/Emacs_%28%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87%29

 

Emacs是一个扩展方便,定制能力强,文档丰富的动态交互编辑器。Emacs的核心构建在Emacs Lisp解释器之上,其中Emacs Lisp是大部分Emacs的内建函数和拓展模块的实现语言。Emacs可以在命令行界面下(CLI)工作良好,在图形界面系统下,使用GTK作为默认的图形界面构建工具。在文本编辑能力上,Emacs常常拿来和vim比较。

Note: 入门建议直接使用starterkit扩展。本文档实际帮助不大

Contents

安装

Emacs有众多变体发行版本(有时候称作emacsen). 最常见的莫过于 GNU Emacs,在Official Repositories可以找到

$ pacman -S emacs

另外一个常见的变体就是xemacs.

快速入门

一般印象是Emacs十分复杂,学习曲线陡峭,但很多资深学习者并不这样认为,反而认为其非常易懂和可定制。因为其源码和配置文件语义化程度较高。 简单了解下自定义和高扩展带来的好处花不了多少时间。何况还有很多成熟的功能拓展模块,很方便添加,可以让Emacs为任何文本编辑的需求配置强大的环 境。

Emacs自带一个入门教程,你可以点击欢迎界面上的第一个链接来打开它; 或者从菜单栏中选择Help->Emacs Tutorial,或者按'F1'键然后按't'. 我们设计这篇文章来为你在Emacs入门学习中提供额外的资源。

Emacs也包括一系列引用链接,既有适合初学者的内容,也有骨灰级玩家所喜爱的.参见/usr/share/emacs/<version>/etc/refcards/ (将<version>换成你的emacs版本).

运行Emacs

图形界面下打开方式

图形界面下可以直接点击图标打开。

虚拟终端下的常见方式

打开Emacs:

$ emacs

不打开图形界面,直接在终端中运行:

$ emacs -nw

也可以马上打开一篇文章:

$ emacs filename.txt
无色运行

默认的emacs会带有颜色主题,如果不需要,可以关闭之:

$ emacs -nw --color=no


作为守护进程

Emacs由于每次启动都需要加载大量自定义的配置文件,所以打开时候会有点慢。从Emacs23开始, Emacs可以以守护进程的形式运行,这样每个用户都可以链接到Emacs。以守护进程运行Emacs:

$ emacs --daemon

你可能在启动时打开一个守护进程,然后再将守护进程链接到窗口。另外,也可以将图形和终端客户端同时链接到守护进程上,这样启动图形界面速度就很快了。

如果你仅仅想链接到守护进程,用下面的命令(注意,在桌面环境下这个命令会打开一个图形客户端,而在像tty这种命令行下,它会打开一个命令行版的emacs):

$ emacsclient

如果你想在桌面环境下打开一个命令行版的emacs,使用下面的命令:

$ emacsclient -t

另外,你可以在后面加上 -a "" 参数. 现在,你第一次使用这个命令时,它会把emacs作为守护进程来启动,它会留在后台以加快以后的启动速度(也会记住缓冲区).

更聪明点,你可以在.bashrc中加上下面的别名:

$ alias e0='emacs --daemon'  #启动守护进程
$ alias e1='emacsclient -t -a ""'  #在终端中开启emacs
$ alias e2='emacsclient -c -a ""'  #启动emacs图形界面


xfce桌面环境中,如果你想使用 emacsclient -c 来代替 emacs %f 打开一个新文件, 你可以修改你的 /usr/share/applications/emacs.desktop 文件,把下面这一行

$ Exec=emacs %f

修改为

$ Exec=emacsclient -c

使用这种方法,每次你打开一个文件时就只会启动客户端,因此速度非常快!

基本术语和约定

Emacs使用一些刚开始看起来很奇怪的术语和约定,我们会在合适的时候介绍。但是,对于部分术语,我们必须要在前面介绍,因为它们对于使用Emacs来说是非常基础的。

第一个要介绍的术语是缓冲区的概念。一个缓冲区就是Emacs中的数据的一种表示方式,比如,当使用Emacs打开一个文件 时,这个文件从磁盘中被读出来,它的内容被存储在了缓冲区里面,它的内容可以在这个缓冲区里面被编辑并且可以重新写进磁盘中。缓冲区中的内容不仅仅可以是 文本,也可以是图片和widget。现在,让缓冲区可以显示应用程序的工作正在进行!换个角度思考,在磁盘中数据是以文件形式保存的,而在Emacs中, 数据是以缓冲区的形式存在的。

在Emacs中,对于按键组合的约定你可能很陌生。比如:

C-x 代表 Control-x

M-x 代表 Meta-x

Note: 'Meta'一般代表Alt键,也可以用Esc键替代。

举个例子,退出Emacs使用下面的按键组合C-x C-c。这个可以读做,"按住Ctrol键再按'x',释放,再按住Control键再按'c'。虽然Emacs提供了一个菜单栏,但是强烈建议学习使用按键组合。这个指南将参考Emacs的按键绑定的约定。

移动

光标移动和其它图形编辑器非常类似,鼠标和方向键可以用来改变光标(在Emacs中称为)的位置。在Emacs中,方向键代表的标准移动命令也有其它辅助的绑定。向前(forward)移动一个字符,使用 C-f,向后(back)移动一个字符,使用C-bC-nC-p 分别用于移动到下(next)一行和移动到上(previous)一行。再声明一下,强烈推荐使用组合键而不是使用方向键和鼠标。

可以想像,Emacs提供了更多的光标高级移动命令,包括移动一个单词和一个句子。 M-f 表示光标向前移动一个单词, M-b 表示向后移动一个单词。类似地,M-e 把光标移动到一个句子的末尾(end), M-a 移动到句子的开头。

直到现在,所有的移动命令都是和光标有关的。M-< 表示把光标移动到缓冲区的开头,和它相反的是 M->, 把光标移动到缓冲区的末尾。要把光标移动到某一特定行,使用M-g g. M-g g 会提示输入行号。同样,要移动到一行的开头或者结尾,分别使用C-aC-e

Note: 这些命令(实际上是全部命令)的绑定,在不同的模式(mode)中,稍微会有不同。然而,覆盖的命令提供不同的功能这种情况很少见。更多信息请看Modes

文件和缓冲区

Emacs 提供了一系列命令来对文件操作,其中最常用的会在这里详细说明。C-x C-f 用来打开一个文件(在Emacs中叫做'查找文件')。如果指定的文件不存在,Emacs会打开一个空的缓冲区。保存一个缓冲区会创建一个包含缓冲区内容的文件。C-x C-s 就是用来保存缓冲区的。要保存一个文件名不一样的缓冲区,使用C-x C-w (这其实是'write-file'这条命令的助记符), 它会在写入磁盘之前提示输入新文件名。也可以使用C-x s来保存所有的缓冲区, 如果某个缓冲区在上次保存之后被修改了,则会提示进行哪项操作。

Note: 如果指向某个文件的缓冲区还在打开的话,C-x C-f 是不会重新从磁盘中读取文件的。要从磁盘中重新读取文件,先使用C-x k关掉缓冲区,再使用C-x C-f打开文件,或者使用M-x revert-buffer.

很多互动的命令,比如"find-file" 或者 "write-file" 会在Emacs窗口的底部栏提示输入。这栏称为minibuffer。和很多*nix shell一样,minibuffer支持很多基本的操作和TAB补全。按两下<TAB>可以显示一个补全的选项列表,并且,如果你喜欢,可以用鼠标从列表中选择。minibuffer的补全在很多输入(包括命令和文件名)中都可以用。

minibuffer也提供一个记住历史的特性。通过Up Arrow 或者 C-p可以取得这条命令的上一个条目.

要在任意时刻退出minibuffer,使用C-g.

打开几个文件后,切换缓冲区是非常必要的。打开一个指向那个缓冲区的文件可以切换到那个缓冲区。但是这不是最高效的方法。Emacs提供C-x b来提示要显示的新缓冲区(这里可以使用TAB补全)。输入一个不存在的缓冲区,则会新建一个空的缓冲区。

Note: 要切换到上一个缓冲区,使用C-x b <RET>, 因为上一个缓冲区是默认的缓冲区。

使用C-x C-b可以显示所有打开缓冲区的列表。如果某个缓冲区不需要使用了,使用C-x k来关掉它。

编辑

Emacs 内建有很多编辑命令。可能最重要的还没有介绍的是'undo',它的快捷键为 "C-_" 或者 "C-/" .移动光标的命令通常都有对应的删除字符的命令。例如, M-<backspace> 可以用来删除一个光标后的词,M-d可以用来删除光标前面的一个词。删除光标至行尾或者句尾的字符可以分别用C-k 或者 M-k

通常我们都约定一行不能超过80个字符。这是为了代码的可读性,尤其是一行中的字符可能会接触到窗口边缘。在Emacs,自动地插入或者删除换行符称为filling。我们可以用 M-q 重整当前的段落(重新分配换行符,删除段落中多余的空格和tab键)

字符和单词可以分别通过 C-tM-t 进行交换。比如: Hello World!World! Hello

单词的大小写也可以调整。M-l 把光标处的单词变成小写 (HELLOhello); M-u 把光标处的单词变成大写(helloHELLO), M-c 把光标处的单词的第一个字母变成大写,并把后面的变成小写(hElLoHello).

 

#################################################################################

http://man.chinaunix.net/newsoft/Emac/book.html

Emacs 中文化指南

Jerry 最后更新时间: 2004年3月21日

本文件仅收集我个人在使用Emacs中的一些经验和技巧, 本文可以随意转载, 无需通知作者, 本文最新文档可以从http://zhdotemacs.sourceforge.net上获得, E-mail: unidevel@yahoo.com.cn. 不定期更新 如有错误, 敬请指出, E-mail: unidevel@yahoo.com.cn



Chapter 1 最近更新

Jerry

1.1 2004年08月11日

  1. 更新Section 10.2中的mule-gbk的链接.

  2. 由于更换了操作系统,以前使用FreeBSD docproj编写的文档暂时无法更新


1.2 2004年05月01日

  1. 新增 Section 9.1zile中文设置.


1.3 2004年04月20日

  1. 新增 Section 5.3.3设置多个邮件.


1.4 2004年03月21日

  1. 新增 Chapter 7自己写的一些Emacs lisp.


1.5 2004年01月20日

  1. 新增 Section 5.3.3mew发送和接收邮件.


1.6 2003年12月19日

  1. 新增 Chapter 9迷你型的Emacs.

  2. 修改 Section 4.4我最最讨厌的, 新增step 10如何忽略错误.


1.7 2003年12月17日

  1. 新增 Section 4.3 time-stamp -- 记录修改时间.

  2. 修改 Section 3.2.2 Windows配置, 新增不使用intlfonts的配置.

  3. 修改 Section 10.1 中文资源, 新增邮件列表.


Chapter 2 Emacs 安装

Jerry

Emacs可以运行于*NIX及Windows平台, 我用它来搭建统一的开发环境

不过首先最好认识一下Stallman.


2.1 下载Emacs源代码

Emacs最新版本的源代码可以从http://ftp.gnu.org/pub/emacs上获得, 或者通过cvs获得开发版及稳定版的源代码, 我一般选择稳定的版本, 毕竟很多扩展包都经过了测试, 使用起来稳定可靠(Windows下的应该除外, 我用过几个版本, 总是会出一些问题, Linux上的Emacs比较稳定, 通过FreeBSD ports安装的Emacs也比较稳定), 不过感觉Emacs 21.3对中 文支持并不如从CVS中编译的好, 因此本文就是使用CVS下载Emacs的源代 码在FreeBSD 5.1-Current下编译的.


2.2 安装Emacs

FreeBSD下推荐通过ports或者安装包直接安装, 也可以从cvs中下载最新代码编译, 编译时则可以使用./configure调整编译选项进行编译, 请不要使用--without-xim选项, 该选项使Emacs不使用XIM输入协议, 因此使用该选项则不能使用像chinput, xcin等使用XIM协议的输入法, 虽然Emacs子带输入系统, 但是中文的输入实在太差, 后面我会讲到如何扩展Emacs的输入法, 我在FreeBSD下编译Emacs(CVS)的命令如下,

$script emacs_build.log
$CPPFLAGS=-I/usr/local/include CXXFLAGS=-I/usr/local/include \
 CFLAGS=-I/usr/local/include LDFLAGS=-I/usr/local/lib \
 ./configure --prefix=/dtroot --with-xpm --with-jpeg \
 --with-tiff -with-gif --with-png --with-x --with-xim
$make -j4 bootstrap
$make install
$exit
   

或者使用--with-gtk, 来使用gtk的外观

$script emacs_build.log
$CPPFLAGS=-I/usr/local/include CXXFLAGS=-I/usr/local/include \
 CFLAGS=-I/usr/local/include LDFLAGS=-I/usr/local/lib \
 ./configure --prefix=/dtroot --with-xpm --with-jpeg \
 --with-tiff -with-gif --with-png --with-x --with-xim --with-gtk
$make -j4 bootstrap
$make install
$exit
   

假如你是用cvs获得的源代码, configure后应该使用 make bootstrap编译


2.3 遇到问题怎么办

以我的经验来看, 最好的办法就是先找找对应的FAQ, 然后找手册, 再去 对应的邮件列表上问一下, 最后就是自己调试程序.


2.4 Emacs 基本编辑命令(1)

Emacs的强大功能相信大家都已经听说过了, 熟悉vi或windows下IDE 工具开始使用时Emacs会觉得十分难受. 这一节讲一下基本的几个编译命 令, 首先说明一下以`C-'开头的是`Ctrl'键加上后面的键一块按下, 例如`C-x 0'就是Ctrl键和x键一块按下, 然后再按下0, 以`M-'开头的就是META键, 一般就是Alt键.

  • `C-x C-f 文件名'-- 打开文件

  • `C-x C-s'-- 保存文件

  • `C-x C-c'-- 退出Emacs

  • `C-x u'-- 取消上一次操作

有了这四个基本指令就可以进行通常的编辑保存功能了, 不过现在你 肯定感觉不到Emacs的强大功能. 甚至会觉得Emacs还不如Windows的 Notepad, 别急, 熟悉一下Emacs后我们再来感受Emacs的超强功能.


2.5 Emacs基本编辑指令(2)

我们继续讲解Emacs的基本指令, 这一部分讲解基本的光标指令, 你 可以用Emacs打开一个文件, 我们一起来"运动"

  • `C-v'-- 向后翻一页

  • `M-v'-- 向前翻一页

  • `C-l'-- 将当前行居中

  • `C-f'-- 向前移动一个字符

    `M-f'-- 向前移动一个单词

  • `C-b'-- 向后移动一个字符

    `M-b'-- 向后移动一个单词

  • `C-n'-- 向下移动一行

    `C-p'-- 向上移动一行

  • `C-a'-- 移至当前行的第一个字符

    `M-a'-- 移至当前所在句子的第一个字符

  • `C-e'-- 移至当前行的最后一个字符

    `C-p'-- 移至当前所在句子的最后一个字符

  • `M-<'-- 移动到当前窗口的第一个字符

    `M->'-- 移动到当前窗口的最后一个字符

    注意: `M-<'输入时要同时键入`Alt', `Shift'和`,'

这些命令前可以加入`C-u N'表示重复N次, 例如向下移动8行可以这 样按键`C-u 8 C-n'

好了, 基本的移动指令就介绍完了, 可能这些键使用起来是不太顺手, 在本章最后, 我们将讲一下如何定制这些键, 使Emacs更加符合个人的使用 习惯.


Chapter 3 Emacs 中文设置

Jerry

Emacs发展到今天, 功能已经十分完善和强大, Emacs有强大的多语言编辑功 能, 当然设置的得当才能发挥出Emacs的强大功能, 下面讲述一下在Windows 以及X Window上的多语言的设置问题


3.1 系统对多语言的支持性

3.1.1 Console环境

这里的Console是像Windows下的cmd, command, Unix下的console, tty 的统称, Console环境下, 只要本身能正常显示中文就可以了, Emacs自 带输入法, 基本上不用怎么设置就可以使用


3.1.2 Windows系统

Windows本身对多语言支持的已经是十分完善了, 只是要切换缺省语言 比较麻烦, 设置完后总要重启(针对Windows 2000和Windows XP), Emacs对中文的支持也因版本的不同而不同, 通常的方法和在X Window 下类似, 需要设置对应的字体, 而Windows下最好使用bdf字体, 相关的 字体可以在XEmacs站点上下载到, 我用的是intlfonts-1.2


3.1.3 X Window系统

X Window下首先需要汉化X, 使X能正常使用中文, 其实和Windows差不 多, 也不过是设置字体, 因为X本身已经对多语言提供支持(建议使用 XFree86 V4.2及以上版本), X上最好是把Windows下的那些ttf和ttc的 字体拿来使用, 毕竟不是免费字体, 作工还是要好一些


3.2 中文设置

3.2.1 通用配置

这一部分是所有系统都要设置的

(set-language-environment 'Chinese-GB)
(set-keyboard-coding-system 'euc-cn)
(set-clipboard-coding-system 'euc-cn)
(set-terminal-coding-system 'euc-cn)
(set-buffer-file-coding-system 'euc-cn)
(set-selection-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)
   

3.2.2 Windows配置

这一部分设置Windows下的字体, 解压intlfonts-1.2, 设置变量 fonts-dir为所安装的字体目录

(setq fonts-dir "<path to intlfonts>")
(setq bdf-directory-list 
      (list 
       (expand-file-name "Asian" fonts-dir)
       (expand-file-name "Chinese" fonts-dir)
       (expand-file-name "Chinese.BIG" fonts-dir)
       (expand-file-name "Chinese.X" fonts-dir)
       (expand-file-name "Ethiopic" fonts-dir)
       (expand-file-name "European" fonts-dir)
       (expand-file-name "European.BIG" fonts-dir)
       (expand-file-name "Japanese" fonts-dir)
       (expand-file-name "Japanese.BIG" fonts-dir)
       (expand-file-name "Japanese.X" fonts-dir)
       (expand-file-name "Korean.X" fonts-dir)
       (expand-file-name "Misc" fonts-dir)
       (expand-file-name "TrueType" fonts-dir)
       (expand-file-name "Type1" fonts-dir)))
(setq w32-bdf-filename-alist
      (w32-find-bdf-fonts bdf-directory-list))
(create-fontset-from-fontset-spec
 "-*-fixed-medium-r-normal-*-16-*-*-*-c-*-fontset-bdf,
 chinese-gb2312:-*-*-medium-r-normal-*-16-*-*-*-*-*-gb2312.1980-*,
 japanese-jisx0208:-*-*-medium-r-normal-*-16-*-*-*-c-*-jisx0208.1983-*,
 katakana-jisx0201:-*-*-medium-r-normal-*-16-*-*-*-c-*-jisx0201*-*,
 latin-jisx0201:-*-*-medium-r-normal-*-16-*-*-*-c-*-jisx0201*-*,
 japanese-jisx0208-1978:-*-*-medium-r-normal-*-16-*-*-*-c-*-jisx0208.1978-*,
 thai-tis620:-misc-fixed-medium-r-normal--16-160-72-72-m-80-tis620.2529-1,
 lao:-misc-fixed-medium-r-normal--16-160-72-72-m-80-MuleLao-1,
 tibetan-1-column:-TibMdXA-fixed-medium-r-normal--16-160-72-72-m-80-MuleTibetan-1,
 ethiopic:-Admas-Ethiomx16f-Medium-R-Normal--16-150-100-100-M-160-Ethiopic-Unicode,
 tibetan:-TibMdXA-fixed-medium-r-normal--16-160-72-72-m-160-MuleTibetan-0")
(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))
(set-default-font "fontset-bdf")
     

注意: 上面的中文字体的大小只能为16,24,40,48, 因为intlfonts 中的BDF字体只有这几种大小的中文字体能匹配上面的chinese-gb2312的配置, 此外在Emacs 21.3中还可以这样设置

(set-language-environment 'Chinese-GB)
(set-default-font "-outline-新宋体-normal-r-normal-normal-12-*-96-96-c-*-gb2312")
     

假如你不知道系统的字体就M-x set-default-font, 然后使用TAB 键来看一下补全的字体信息


3.2.3 X Window设置

X的中文设置我就不说了, 自己搞定吧, 我拷贝了Windows的simsun.ttc 和mingliu.ttc来使用, 看简繁体中文不成问题了, 设置好X的字体后, 通过配置X Resources, 来设置emacs的字体, 通常就是配置$HOME/.Xdefaults, 1024x768的分辨率下可以设置字体为8x16, 800x600可以设置7x14的字体就可以达到字体等宽的效果

emacs.font:  8x16
emacs.paneFont:  8x16
Emacs.pane.menubar.font: 8x16
Emacs.foreground: white
Emacs.background: black
emacs.geometry:  100x32
     

3.3 Emacs输入法

Emacs自带多种输入法, 当然不止一种语言了, 但它自带的中文输入 法实在是太......, 想必不会有谁去用它的中文输入法来输入汉字吧, 不过 还是有几种比较好的输入法像自然码等, 我从fcitx和xcin的源码包中转换出 几种输入法, 有五笔, 注音, 双拼等, 下面说一下使用方法, 可以从 http://sourceforge.net/projects/zhdotemacs/ 下载到emacsim.tar.bz2

安装及使用方法, 参见安装包中的INSTALL文件

  1. 安装输入法

    $tar -xvjf emacsim.tar.bz2
    $cd emacsim
    $cp -R gb big5 ${emacs-install-dir}/share/emacs/${emacs-version}/leim
       
    
  2. 配置输入法, 拿gb/pingyin.el为例, 把下面的代码加入到文件 ${emacs-install-dir}/share/emacs/${emacs-version}/leim/leim-list.el中

    (register-input-method
     "chinese-pinyin-gb" "Chinese-CNS" 'quail-use-package
     "拼音" "汉字输入∷【拼音】∷"
     "gb/pinyin")
       
    
  3. 输入法的使用, 按照上面的例子, 使用 `M-x set-input-method RET chinese-pinyin-gb RET' 就可以使用了


Chapter 4 一些常用的Emacs功能

Jerry

这一部分对Emacs安装后自带的一些实用的扩展功能进行讲解


4.1 auto-insert -- 自动插入功能

auto-insert是一个十分有用的功能, 比如我们在写一个C语言的头文 件时, 一般会加入下面的代码

#ifndef XXX_H
#define XXX_H

#endif /* XXX_H */
   

auto-insert就方便了我们, 不用每次都要手工输入这些代码, 新建 一个头文件时, 它会询问是否要加入这些自动生成的代码, 下面来看一下 auto-insert如何使用

`M-x auto-insert'会根据当前的mode在新建的文 件插入一些预定的文本, 如果想在打开文件时自动插入的话, 将下面的代 码加入~/.emacs中

(add-hook 'find-file-hooks 'auto-insert)
   

修改`auto-insert-alist'可以定制插入的模板, 可以使用`defint-auto-insert'来加入或者修改`auto-insert-alist'

变量`auto-insert'用来定制自动插入时的动作类 型

  • `nil'什么都不作, 即不执行插入动作

  • `t'根据auto-insert-alist和当前的mode执 行对应的插入动作

  • 其他值同`t', 但是自动插入文本后, 不置 文档修改标志

变量`auto-insert-query'定义自动插入文本前是 否询问,`Non-nil'表示自动插入文本前要询问.

变量`auto-insert-prompt'设定询问的语句, 如 果有%s, 则将被替换为执行插入的条件

变量`auto-insert-directory'设定模板的路径, 注意必须以`/'结尾

下面是一个比价完整的配置

(setq auto-insert t)
(setq auto-insert-query t)
(add-hook 'find-file-hooks 'auto-insert)
(setq auto-insert-directory "~/insert/")
(define-auto-insert '("^build\\.xml\\'" . "Ant编译脚本") "build.xml")
   

常见问题, auto-insert-directory的值必须以`/'结尾, 否则就不能 正常工作


4.2 QuickURL -- 快速插入地址

QuickURL允许我们快速的插入一个单词对应的地址, 也允许加入新的 地址, 这有点像浏览器的收藏夹, 对于经常写这些文档的我来说十分方便实 用, 同时也可以收藏一些好文章的地址.

QuickURL是Emacs自带的, 所以不需要特殊的配置就可以直接使用, 常用功能如下:

  1. `quickurl-ask'在当前位置插入所选的URL

  2. `quickurl-add'加入新的URL

  3. `quickurl-list'列出所有的URL

  4. `quickurl-edit'编辑所有的URL

QuickURL还有一些其他的指令, 自己看看帮助吧, 希望它能对你有用


4.3 time-stamp -- 记录修改时间

打开time-stamp可以记录最后运行time-stamp的时间, 所以一般将 time-stamp 加入 write-file-hooks 中, 记录文件的最后修改时间, ~/.emacs 配置如下:

(add-hook 'write-file-hooks 'time-stamp)
(setq time-stamp-format "%:u %02m/%02d/%04y %02H:%02M:%02S")
   

上面设置写入文件时执行time-stamp, 并设置时间格式为"%:u %02m/%02d/%04y %02H:%02M:%02S", 缺省的情况下, 在所编辑文件的前八行内插入如下标记

Time-stamp: <>
   

或者

Time-stamp: " "
   

Emacs在保存时就会运行write-file-hooks中的time-stamp, 从而加 入修改时间, 结果类似下面所示

Time-stamp: <jerry 12/17/2003 12:00:54 (unidevel.com)>
   

或者

Time-stamp: "jerry 12/17/2003 12:00:54 (unidevel.com)"
   

要使用中文表示, 可以这样设置

(setq time-stamp-start "最后更新时间:[     ]+\\\\?")
(setq time-stamp-end: "\n")
(setq time-stamp-format: "%:y年%:m月%:d日")
   

上面设置了如果碰到"最后更新时间:"的字样, time-stamp就将其后 面的字符替换为当前时间的"XXXX年XX月XX日", 注意, time-stamp-end的结束符 为换行符, 所以"最后更新时间:"行后所有字符都将无条件被替换为"XXXX年XX月XX日" 格式的时间, 本文首页上的更新时间就是这样做出来的


4.4 我最最讨厌的

  1. 不要打入 TAB 时总是听到 PC 喇叭嘀嘀嘀的叫

    (setq visible-bell t)
    
  2. 不要总是没完没了的问yes or no, 为什么不能用 y/n

    (fset 'yes-or-no-p 'y-or-n-p)
    
  3. 为什么不能显示个时间什么的

    (display-time)
    
  4. 为什么不显示当前所在的行号和列号

    (column-number-mode t)
    
  5. 为什么不能像Windows下编辑器那样, 高亮显示要拷贝的区域

    (transient-mark-mode t)
    
  6. 我要显示匹配的括号

    (show-paren-mode t)
    
  7. 为什么使用语法显示的大文件在移动时如此之慢

    (setq lazy-lock-defer-on-scrolling t)
    (setq font-lock-support-mode 'lazy-lock-mode)
    (setq font-lock-maximum-decoration t)
       
    
  8. 不要那个如此大的工具条

    (tool-bar-mode -1)
       
    
  9. 在mozilla, openoffice等拷贝的中文文字无法正确粘贴在Emacs中(Emacs 21.3 发布版有此问题, 至少在我的FreeBSD下是这样的)

    (set-clipboard-coding-system 'ctext)
       
    
  10. 启动Emacs报错, ~/.emacs中有问题, 如何忽略错误

     (condition-case err
         (progn
         (require 'xxx) )
       (error
        (message "Can't load xxx-mode %s" (cdr err))))
       
    

    如上所示, 可以截获progn内部出错, 在mini-buffer下打出错误信息

  11. 不要生成临时文件

    (setq-default make-backup-files nil)
       
    

Chapter 5 Emacs 扩展包安装

Jerry

Emacs的扩展包可谓无所不有, 我只把关于开发的一些常用工具的安装 和配置及问题写一下


5.1 Tramp -- Transparent Remote Access, Multiple Protocol

5.1.1 tramp简介

tramp提供给我们的是可以使用Emacs对本地/远程的文件进行编辑, 保存, 版本管理等, tramp的功能十分强大, 它可以使用多种协议(telnet, ftp, ssh等)进行文件的获取和保存, 也可以使用这些协议的组合来编辑和保存文件, 对本地文件的一个比较方便的操作是su, 即使用其他用户编辑只有这些用户才有权限进行编辑的文件. 例如以普通用户jerry运行Emacs 对只有root可以编辑的/etc/inetd.conf进行编辑和保存, 免去了再开一个shell以root登陆编辑的步骤


5.1.2 Tramp原理

Tramp的原理是使用标准的协议ftp, rsync, smb等直接获取和保存文件, 使用ssh, telnet, rsh等加上uuencode, uudecode等一些编码解码程序对文件进行 获取和保存


5.1.3 tramp的安装及使用

我使用的是tramp-2.0.33, 它加入了对smb支持(暂时还不是很完善, 如编辑一些中文名称的文件), 及对ftp的改进. 安装过程如下:

  1. 下载 tramp-2.0.33.tar.gz

  2. 假设安装到/tmp/tramp目录下, 解包tramp到/tmp/tramp下

    $tar -xvzf tramp-2.0.33.tar.gz
    $mv tramp-2.0.33 /tmp/tramp
         
    
  3. 编译tramp

    $./configure --with-emacs
    $gmake
         
    
  4. 安装tramp, 在~/.emacs中加入下面的代码

    (add-to-list 'load-path "/tmp/tramp/lisp")
    (setq tramp-default-method "scp")
    (setq tramp-auto-save-directory "/tmp")
    (setq auto-save-file-name-transforms
          '(("\\`/[^/]*:\\(.+/\\)*\\(.*\\)" "/tmp/\\2")))
    (setq tramp-chunksize 328)
    (require 'ange-ftp)
    (require 'tramp)
         
    
  5. 重新启动Emacs或使用C-x C-e顺序执行上述代码就可以了


5.1.4 常见问题

tramp在一些版本的Emacs上会出现读出正常, 保存就无响应的现象, 设置tramp-chunksize为小于500的整数就可以了, 因为一些版本的Emacs中 process-send-string按照文档记载最长只能为500.

此外tramp和ange-ftp有些冲突, 因为ange-ftp使用autoload装入, ange-ftp会设置 file-name-handler-alist变量, 从而将tramp设置的值覆盖掉, 因此使用 (require 'ange-ftp)首先装入ange-ftp, 然后使用(require 'tramp)装入tramp, 就不会出现这种问题.

上述配置在windows平台上不能使Emacs正常使用tramp. Windows上推荐 使用tramp+putty, 相关配置可以使用Google查到.


5.2 session

5.2.1 session简介

session扩展包可以使Emacs保存每次编辑的一些历史记录, 这样, 在下次打开Emacs时就可以使用上下键在以前输入的信息中选取, 十分方便实用.


5.2.2 session的使用

session的使用十分简单, 只需要在~/.emacs中加入如下几句就可 以了:

(add-to-list 'load-path "<path to session>")
(require 'session)
(add-hook 'after-init-hook 'session-initialize)
     

5.3 Emacs mew -- 强大的Emacs Email客户端

Emacs mew是一个由日本人编写的Emacs邮件客户端, 对中文支持非常 之好也是我选择它的原因. 废话少说, 开始----


5.3.1 Emacs Mew的安装

Emacs mew的最新版本和源代码可以从 http://www.mew.org上下 载, 下载后解压, 使用make进行编译安装, 路径可以修改一下Makefile 中的prefix, elispdir和etcdir, 注意${prefix}/bin必须在PATH变量 中, 没有的话作个符号链接也可以, 对于NTEmacs的用户, 要把下载mew 安装包中的几个exe文件拷贝到emacs安装目录的bin下.


5.3.2 Emacs mew配置

把下面的代码加入~/.emacs中, 把用户名, 主机名换成对应的就可 以了

(autoload 'mew "mew" nil t)
(autoload 'mew-send "mew" nil t)
(if (boundp 'read-mail-command)
    (setq read-mail-command 'mew))
(autoload 'mew-user-agent-compose "mew" nil t)
(if (boundp 'mail-user-agent)
    (setq mail-user-agent 'mew-user-agent))
(if (fboundp 'define-mail-user-agent)
    (define-mail-user-agent
       'mew-user-agent
       'mew-user-agent-compose
       'mew-draft-send-message
       'mew-draft-kill
       'mew-send-hook))
(setq mew-pop-size 0)
(setq mew-smtp-auth-list nil)
(setq toolbar-mail-reader 'Mew)
(set-default 'mew-decode-quoted 't)  
(setq mew-prog-pgp "gpg")
(setq mew-name "显示的用户名")
(setq mew-user "用户名")
(setq mew-smtp-user "用户名")
(setq mew-mail-domain "主机的域名")
(setq mew-smtp-auth-list nil)
(setq mew-smtp-server "SMTP主机")
(setq mew-pop-server "POP主机")
(setq mew-pop-user "用户名")
(setq mew-pop-auth 'pass) ;;认证方式
(setq mew-use-cached-passwd t)
(setq mew-nntp-server "NNTP服务器")
(setq mew-icon-directory (expand-file-name "mew/etc" dtsite-dir))
(when (boundp 'utf-translate-cjk)
      (setq utf-translate-cjk t)
      (custom-set-variables
         '(utf-translate-cjk t)))
(if (fboundp 'utf-translate-cjk-mode)
    (utf-translate-cjk-mode 1)) 
(require 'flyspell) ;;非常好用的英文的拼写检查
     

5.3.3 常见问题

  • 无法从网上下载所有邮件,总是报告类似"no new messages (3 messages left)"的消息

    删除Mail/.mew-uidl文件使Mew将邮件认为新邮件,设置(setq mew-pop-size 0) 使mew下载所有邮件,不论大小, 注意首先要使 用'Q'退出new ( 'Q' is 'shift' + 'q', not just 'q'), 保证 mew重新加载~/Mail/.mew-uidl

  • 如何在mew将邮件地址加入地址簿?

    C-cC-a加入地址簿, C-uC-cC-a加入地址和用户信息, 在发送邮件时可以使用TAB补全, 使用M-TAB将地址转换为User<address>的样子

  • 无法发送和接收邮件

    在mew的分发包中一般包含mewls, mewl, mewencode, mewdecode, incm等可执行文件, 检查它们所在路径是否包含在环境变量PATH中, 或者拷贝这些文件到emacs安装目录的bin目录下

  • 设置多个邮件

    mew提供多邮件设置, 这是通过设置mew-config-alist变量完成的, 例如我的邮箱设置 (可以设置在~/.emacs或者~/.mew.el中)

    (setq mew-config-alist
          '(("yahoo"
         ("name"         .  "Jerry")
         ("user"         .  "myname")
         ("smtp-server"  .  "127.0.0.1")
         ("smtp-port"    .  "5059")
         ("pop-server"   .  "127.0.0.1")
         ("pop-port"     .  "5058")
         ("smtp-user"    .  "myname")
         ("pop-user"     .  "myname")
         ("mail-domain"  .  "nonexist.com")
         ("mailbox-type" .  pop)
         ("pop-auth"     .  pass)
         ("smtp-auth-list" . ("PLAIN" "LOGIN" "CRAM-MD5"))
         )
        ("default"
         ("name"         .  "Jerry")
         ("user"         .  "sample")
         ("smtp-server"  .  "127.0.0.1")
         ("smtp-port"    .  "25")
         ("pop-server"   .  "127.0.0.1")
         ("pop-port"     .  "110")
         ("smtp-user"    .  "sample")
         ("pop-user"     .  "sample")
         ("mail-domain"  .  "sample.net")
         ("mailbox-type" .  pop)
         ("pop-auth"     .  pass)
         ("smtp-auth-list" . ("PLAIN" "LOGIN" "CRAM-MD5"))
         )))
         
    

    设置好后, 可以通过在summary列表下输入`C'切换设置, 不过需要注意 "mailbox-type"和"pop-auth"设置的值是没有引号的


5.3.4 一些mew的屏幕截图

mew屏幕截图1

mew屏幕截图2


5.4 Color Theme -- 让你的Emacs更多彩

这个扩展包与开发工具没有多大关系, 不过还是有一点点的, 至少可 以帮助htmlize生成的html有不同的背景, 它主要是为Emacs配置不同的色 彩搭配, 使之像Windows那样据有不同的色彩主题, 例如某些变变总是把 各种IDE的编辑器设置的像是控制台下的VI一样黑底白字.


5.4.1 color-theme的安装

想不起来在哪里下载的了, 用Google搜索一下吧, 安装起来比较简单, 就是将安装目录加入load-path, 调入color-theme, 需要的话再选择一个缺 省的theme就可以了, 例如将color-theme.el放在/tmp下, 则配置如下:

(add-to-list 'load-path "/tmp")
(require 'color-theme)
(color-theme-dark-blue)
     

5.4.2 color-theme的使用

安装完后, Tools菜单下会有一个Color Theme的菜单项, 可以用这 个定制color-theme, color-theme自带有不少的颜色主题


Chapter 6 一些小巧的Emacs lisp

Jerry

有很多的Emacs lisp, 非常小巧而实用, 下面就介绍一些我常用的


6.1 tab-display.el

tab-display.el是用来以'<'字符标识出文件中的那些tab字符, 对于编辑某些文件来说非常有用, 它清楚地标明那些字符是tab的字符

点击这里下载tab-display.el

使用十分简单, 只需要在~/.emacs中加入(require 'tab-display)就可以了, 当然首先你要作的是把tab-display.el所在的路径加入load-path中

tab-display屏幕截图


6.2 wb-line-number.el

wb-line-number.el可以在窗口左侧分割出一个显示行号的小窗口, 比那个mode-line上的行号看的更清楚一些

点击这里下载wb-line-number.el

使用时在~/.emacs中加入下面的语句(不要总是要我提醒你注意load-path设置哦)

(set-scroll-bar-mode nil)   ; no scroll bar, even in x-window system
(require 'wb-line-number)
   

在需要显示行号的buffer打入M-x wb-line-number-toggle就可以了, 或者像我这样在~/.emacs中再加入一句(wb-line-number-enable)缺省显示行号

wb-line-number屏幕截图


6.3 keisen-mode

keisen-mode是一个用来绘制表格的好工具, 尤其是绘制中文表格, 比起那个table.el来说好多了, kersen-mode是小日本写的, 点击这里下载 keisen-mule.lzh, 文件使用lha压缩, 使用时在~/.emacs中加入下面的语句

(if window-system
    (autoload 'keisen-mode "keisen-mouse" "MULE table" t)
  (autoload 'keisen-mode "keisen-mule" "MULE table" t))
   

操作起来只要使用Emacs中的移动键或者鼠标移动, 就可以绘制出各种表格了, 它会自动计算各个连接点, 简单方便

keisen-mode屏幕截图


Chapter 7 自己写的一些Emacs lisp

Jerry
  1. Emacs MPG123歌词同步显示 -- lrc.el, 点击下载, 可以显示大部分lrc格式的歌词, 还有一些BUG, 导致某些的歌词无法显示, 正在修改中

    安装说明: 替换掉mpg123.el, 删去原来的mpg123.el,mpg123.elc, 在~/.emacs中加入下面的代码就可以了

    (setq lrc-lyric-dir "lrc文件的路径") to ~/.emacs
    (require 'mpg123)
         
    

    歌词显示在minibuffer中, 点击看大图

以前的一些这里下载


Chapter 8 Emacs中一些有趣的功能

Jerry

8.1 Emacs中的游戏

Emacs自带了一些小游戏, 介绍几个

  1. M-x tetris

    俄罗斯方块

  2. M-x gomoku

    五子棋游戏

  3. M-x mpuz

    填数字游戏

  4. M-x snake

    贪吃蛇游戏

  5. M-x zone

    一个Emacs的屏保, 因为抓不出动的效果, 所以还是自己体验吧, 我第一次用它时把同事吓了一跳, 被误认作病毒

  6. M-x dunnet

    一个Mud游戏, 比较难玩, 推荐英文比较好的一定玩一下

  7. M-x nethack

    这个可不是Emacs自带的, 给那些nethack的faners, 需要下载nethack.el, 自己搜一下吧, 不过记得要重新编译nethack来支持Emacs

剩下的那些不是我不会玩就是不好玩, 故不浪费时间介绍了, 自己体会吧


Chapter 9 迷你型的Emacs

Jerry

网上有一些类似Emacs的编辑程序, 十分小巧, 比较著名的有下面几个

当你的机器无法忍受庞大的Emacs时, 不妨试试这些小巧的编辑器, 我在一台PII266/64M RAM 的笔记本上就使用zile来进行开发


9.1 zile 中文设置

zile安装完毕后需要修改缺省的配置来显示中文, 一般就是在$HOME/.zilerc中加入或者修改 displayable-characters, 修改成下面的样子

      displayable-characters = "0x20-0xff"
   

Chapter 10 Emacs网络资源汇总

Jerry

10.1 中文资源

1. 我在yahoo groups上申请了邮件列表, 希望大家可以参与讨论

此外, 可以通过http://groups.yahoo.com/group/zhdotemacs/来查看以往信件, 不过必须注册一个yahoo帐号.


10.2 Lisp资源


10.3 文档资源

Notes

[1]

首先需要订阅, 订阅后可以向zhdotemacs@yahoogroups.com发送邮件参与讨论

[2]

订阅时向zhdotemacs-subscribe@yahoogroups.com发送一封邮件, 主题上写"subscribe"就可以了, 注意不要加上引号, 收到确认信后, 按照内容中所说的回复或点击对应链接就可以了

[3]

退订时向zhdotemacs-unsubscribe@yahoogroups.com发送一封邮件, 主题上写"unsubscribe"就可以了, 注意不要加上引号, 收到确认信后, 按照内容中所说的回复或点击对应链接就可以了

 

 

 

 

 

 

 

posted @ 2013-08-21 14:16  陳聽溪  阅读(3235)  评论(0)    收藏  举报