﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-justinlei-文章分类-Linux</title><link>http://www.blogjava.net/justinlei/category/2532.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 07:48:00 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 07:48:00 GMT</pubDate><ttl>60</ttl><item><title>Ubuntu 获Linux Journal 2005 读者选择奖</title><link>http://www.blogjava.net/justinlei/articles/19891.html</link><dc:creator>JustinLei</dc:creator><author>JustinLei</author><pubDate>Tue, 15 Nov 2005 06:44:00 GMT</pubDate><guid>http://www.blogjava.net/justinlei/articles/19891.html</guid><wfw:comment>http://www.blogjava.net/justinlei/comments/19891.html</wfw:comment><comments>http://www.blogjava.net/justinlei/articles/19891.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/justinlei/comments/commentRss/19891.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/justinlei/services/trackbacks/19891.html</trackback:ping><description><![CDATA[<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%;"><font size="3"><span style="color: black; line-height: 150%; font-family: 宋体;" lang="EN-US">11</span><span style="color: black; line-height: 150%; font-family: 宋体;">月的<span lang="EN-US">Linux Journal</span>将登出<span lang="EN-US">2005</span>读者选择奖的获奖名单，但已透露<span lang="EN-US"><a href="http://www.ubuntu.com/newsitems/ljaward"><font color="#006666">Ubuntu<span lang="EN-US"><span lang="EN-US">获得2005</span></span><span lang="EN-US"><span lang="EN-US">最佳发行版奖</span></span></font></a></span>；<span lang="EN-US">Steve Hastings</span>提到：<span lang="EN-US">“</span>如果想用<span lang="EN-US">Linux</span>作桌面系统，<span lang="EN-US">Ubuntu</span>是一个极好的选择；它的安装和管理都及其容易，相信不论是初学者还是专业人士都会喜欢上它的。<span lang="EN-US">”</span></span></font></p>

             <br>
  <img src ="http://www.blogjava.net/justinlei/aggbug/19891.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/justinlei/" target="_blank">JustinLei</a> 2005-11-15 14:44 <a href="http://www.blogjava.net/justinlei/articles/19891.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux系统新手学习的11点建议</title><link>http://www.blogjava.net/justinlei/articles/19888.html</link><dc:creator>JustinLei</dc:creator><author>JustinLei</author><pubDate>Tue, 15 Nov 2005 06:43:00 GMT</pubDate><guid>http://www.blogjava.net/justinlei/articles/19888.html</guid><wfw:comment>http://www.blogjava.net/justinlei/comments/19888.html</wfw:comment><comments>http://www.blogjava.net/justinlei/articles/19888.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/justinlei/comments/commentRss/19888.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/justinlei/services/trackbacks/19888.html</trackback:ping><description><![CDATA[<font color="#996633" size="2">随着Linux应用的扩展许多朋友开始接触Linux，根据学习Windwos的经验往往有一些茫然的感觉：不知从何处开始学起。这里介绍学习Linux的一些建议。<br>　　<br>　
　一、从基础开始：
常常有些朋友在Linux论坛问一些问题，不过，其中大多数的问题都是很基础的。例如：为什么我使用一个命令的时候，系统告诉我找不到该目录，我要如何限
制使用者的权限等问题，这些问题其实都不是很难的，只要了解了 Linux
的基础之后，应该就可以很轻易的解决掉这方面的问题。而有些朋友们常常一接触Linux 就是希望构架网站，根本没有想到要先了解一下Linux
的基础。这是相当困难的。<br>　　<br>　　二、Linux命令是必须学习
虽然Linux桌面应用发展很快，但是命令在Linux中依然有很强的生命力。Linux是一个命令行组成的操作系统,精髓在命令行，无论图形界面发展到
什么水平这个原理是不会变的，Linux命令有许多强大的功能：从简单的磁盘操作、文件存取、到进行复杂的多媒体图象和流媒体文件的制作。举一个例子:
Linux的常用命令find,察看man文档,初学者一定会觉得太复杂而不原意用,但是你一旦学会就爱不释手.它的功能实在太强了,在配合exec参数
或者通过管道重定向到xargs命令和grep命令,可以完成非常复杂的操作,如果同样的操作用图形界面的工具来完成,恐怕要多花十几陪的时间.
不同版本的Linux命令数量不一样，这里笔者把它们中比较重要的和使用频率最多的命令，按照它们在系统中的作用分成几个部分介绍给大家，通过这些基础命
令的学习我们可以进一步理解Linux系统： 安装和登录命令：login、 shutdown、 halt、 reboot
、mount、umount 、chsh 文件处理命令：file、 mkdir、 grep、dd、 find、 mv 、ls 、diff、
cat、 ln 系统管理相关命令： df、 top、 free、 quota 、at、 lp、 adduser、 groupadd kill、
crontab、 tar、 unzip、 gunzip 、last 网络操作命令：ifconfig、 ip 、ping 、 netstat
、telnet、 ftp、 route、 rlogin rcp 、finger 、mail 、nslookup 系统安全相关命令：
passwd 、su、 umask 、chgrp、 chmod、chown、chattr、sudo、 pswho<br>　　<br>　　三、选择
一本好的工具书
工具书对于学习者而言是相当重要的。一本错误观念的工具书却会让新手整个误入歧途。目前国内关于Linux的书籍有很多不过精品的不多，笔者强烈建议阅读
影印本的“O'Reilly原版Linux图书http://www.oreilly.com.cn/
”，而且出版社还提供了一个非常好的路线图：http://www.oreilly.com.cn/guide/guide_linux.php。<br>　　<br>　
　四、选择一个适合你的Linux发行版本
目前全球有超过1百多个Linux发行版本，在国内也能找到十几个常见版本。如何选择请根据你的需求和能力，Redhat Linux 和Debian
Linux是网络管理员的理想选择。对于英语不是很好的读者红旗Linux、中标Linux这些中文版本比较适合。现在一些Linux网站有一些
Linux版本的免费下载，这里要说的是并不适合Linux初学者。<br>　　<br>　　五、 养成在命令行下工作：
一定要养成在命令行下工作的习惯，要知道X－window只是运行在命令行模式下的一个应用程序。在命令行下学习虽然一开始进度较慢，但是熟悉后，您未来
的学习之路将是以指数增加的方式增长的。从网管员来说，命令行实际上就是规则，它总是有效的，同时也是灵活的。即使是通过一条缓慢的调制解调器线路，它也
能操纵几千公里以外地远程系统。<br>　　<br>　　六、 选择一个适合你的Linux社区；
随着Linux应用的扩展，出现了不少Linux社区。其中有一些非常优秀的社区：www.linuxforum.net（国内最高水平GNU站点）、
http://www.chinaunix.net/
（中国最大的Unix技术社区），但是这几个论坛往往是Linux高手的舞台，如果在探讨高级技巧的论坛张贴非常初级的问题经常会没有结果。<br>　　<br>　
　七、勤于实践： 要增加自己Linux 的技能，只有通过实践来实现了。所以，赶快找一部计算机，赶快安装一个 Linux
发行版本，然后进入精彩的Linux世界。相信对于你自己的 Linux
能力必然大有斩获。此外，人脑不像计算机的硬盘一样，除非硬盘坏掉了或者是资料被你抹掉了，否则储存的资料将永远而且立刻的记忆在硬盘中。在人类记忆的曲
线中，你必须要不断的重复练习才会将一件事情记得比较熟。同样的，学习 Linux
也一样，如果你无法经常学习的话，学了后面的，前面的忘了。你对Linux命令熟悉后你可以开始搭建一个小的Linux网络，这是最好的实践方法。
Linux是网络的代名词，Linux网络服务功能非常强大，不论是邮件服务器、Web服务器、DNS服务器等都非常完善。当然你不需搭建所有服务，可以
慢慢来。需要说明的是这个Linux网络对于初学者有两三台计算机即可，其中一台计算机最好安装Windows系统。自己多动手，不要非要等着别人帮你解
决问题。<br>　　<br>　　八、 如何得到联机帮助 和私有操作系统不同，各个Linux的发行版本的技术支持时间都较短，这对于Linux初学者是往往不够的。其实当你安装了一个完整的Linux系统后其中已经包含了一个强大的帮助，只是可能你还没有发现和使用它们的技巧。<br>　　<br>　　1. 主流Linux发行版都自带非常详细的文档（包括手册页和FAQ），从系统安装到系统安全,针对不同层次的人的详尽文档，仔细阅读文档后40%问题都可在此解决。<br>　　<br>　　2. 查阅经典工具书和Howto，特别是Howto是全球数以万计的Linux、Unix的经验总结非常有参考价值通常40％的问题同样可以解决。<br>　　<br>　
　九、在Linux论坛获取帮助
如果上面的措施没有解决问题，此时你就需要Linux社区的帮助了。Linux的使用者一般都是专业人士，他们有着很好的电脑背景且愿意协助他人，
Linux高手更具有鼓励新手的文化精神。如何在Linux社区获得帮助，需要说明的是你要有周全的思考，准备好你的问题，不要草率的发问，否则只会得到
到草率的回答或者根本得
不到任何答案。越表现出在寻求帮助前为解决问题付出的努力，你越能得到实质性的帮助。最好先搜寻一下论坛是否有您需要的文章。这样可以获得事半功倍的效
果。 下面笔者在论坛看到的一个好问题：“安装红旗4.0
后，系统紫光输入法自带的双拼方案和我的习惯不一样，如何自定义双拼方案解决?谢谢？”这个问题很简练，笔者五分钟后就给出了解决方法：“首先备份原文件
到其他目录，然后删掉/usr/local/unispim/unispimsp.ksc，编辑
/usr/local/unispim/unispimsp.ini
，最后重启动计算机，生成新的unispimsp.ksc”另外得到回复后如果问题解决，向帮助过你的人发个说明，让他们知道问题是怎样解决的，这种补充
有助于他人在邮件列表/新闻组/论坛中搜索对你有过帮助的完整解决方案，这可能对他们也很有用。
下面看看一个让人无法回答的问题：“救命各位高手，向你们请教一些问题：如何在Linux下配制HTTP、FTP、Samba、DNS、DHCP、
Sendmail服务器，谢谢” 这样的问题我想即使Linux高手也很难快速准确精练的回答你。
你需要提供精确有效的信息。这并不是要求你简单的把成吨的出错代码或者数据完全转储摘录到你的提问中。如果你有庞大而复杂的测试条件，尽量把它剪裁得越小
越好。可能你会遇到这种情况，对于一个问题会出现不同内容回答，这时你需要通过实践来验证。另外把这个问题放在其他Linux社区请求帮助也是一种选择。
如果得不到答案，请不要以为我们觉得无法帮助你。有时只是看到你问题的人不知道答案罢了。这时换一个社区是不错的选择。
另外发问的时候一定要注意到某些礼节。因为Linux社区是一个松散的组织、也不承担回复每个帖子的义务。它不是技术支持。<br>　　<br>　　十．用Unix思维学习Linux Linux是参照Unix思想设计的，理解掌握Linux必须按照Unix思维来进行。思想性的转变比暂时性的技术提高更有用,因为他能帮助你加快学习速度。<br>　　<br>　
　十一．学习专业英文
如果你想深入学习Linux,看不懂因为文档实在是太难了。写的最好的,最全面的文档都是英语写的,最先发布的技术信息也都是用英语写的。即便是非英语国
家的人发布技术文档,也都首先翻译成英语在国际学术杂志和网络上发表。安装一个新的软件时先看README,再看INSTALL然后看FAQ,最后才动手
安装,这样遇到问题就知道为什么。如果说明文档不看,结果出了问题再去论坛来找答案反而浪费时间。 11．最后是Linux学习的路线图：<br>　　<br>　　1． 掌握至少50个以上的常用命令。<br>　　<br>　　2． 熟悉Gnome/KDE等X-windows桌面环境操作 。<br>　　<br>　　3． 掌握.tgz、.rpm等软件包的常用安装方法<br>　　<br>　　4． 学习添加外设，安装设备驱动程序（比如网卡）<br>　　<br>　　5． 熟悉Grub/Lilo引导器及简单的修复操作 。<br>　　<br>　　6． 熟悉Linux文件系统 和目录结构。<br>　　<br>　　7． 掌握vi,gcc,gdb等常用编辑器，编译器，调试器 。<br>　　<br>　　8． 理解shell别名、管道、I/O重定向、输入和输出以及shell脚本编程。<br>　　<br>　　9． 学习Linux环境下的组网。 以上是笔者学习Linux一些经验，希望对你有些帮助。</font><img src ="http://www.blogjava.net/justinlei/aggbug/19888.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/justinlei/" target="_blank">JustinLei</a> 2005-11-15 14:43 <a href="http://www.blogjava.net/justinlei/articles/19888.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Debian联盟组织首次发布源代码</title><link>http://www.blogjava.net/justinlei/articles/19890.html</link><dc:creator>JustinLei</dc:creator><author>JustinLei</author><pubDate>Tue, 15 Nov 2005 06:43:00 GMT</pubDate><guid>http://www.blogjava.net/justinlei/articles/19890.html</guid><wfw:comment>http://www.blogjava.net/justinlei/comments/19890.html</wfw:comment><comments>http://www.blogjava.net/justinlei/articles/19890.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/justinlei/comments/commentRss/19890.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/justinlei/services/trackbacks/19890.html</trackback:ping><description><![CDATA[一个为推动Debian GNU/Linux产品商业用途而由一些Linux厂商发起的组织日前发布了第一个产品，并计划陆续推出更多。
<p>几位该组织的发起者提到了Debian Common Core Alliance (DCC Alliance)，其中包括Knoppix, Linspire, MEPIX, Progeny, Sun Wah, UserLinux和Xandros。 </p>
<p>“上周，DCC 3.0 PR1的第一预览版本已经发布了。”接任主席的Debian创始人伊恩·默多克在他的blog中这样写道。他补充说下一版本将在本周或下周早些时候发布。 </p>
<p>他说第一版只能运行在32位和64位的x86架构上，以及Intel的Itanium芯片组上。 </p>
<p>在组织的邮件列表中一封邮件中，默多克强调DCC的Linux产品是基于最新版Debian开发的，并将不断添加安全更新以确保该操作系统符合Linux标准基础项目（LSB）所设定的标准。 </p>
<p>这一项目的目的是开发和推广一系列能提高不同Linux厂商的Linux产品之间兼容性的标准。 </p>
<p>“我们认为，在DCC 3.0 PR1中，我们已经达到了LSB 3.0的标准。”在发给邮件列表的邮件中，默多克提到这一点，但同时他强调该组织刚刚开始对它的兼容性进行测试。 </p>
<p>同时，该组织已经受到了Debian社区的一些批评。一个模仿该组织主页的网站已经出现，取笑说该组织试图通过使用DCC这个缩写词来传播Debian的商标。 </p>
<p>这个假网站上宣称，“开设的目的在于驳斥那种暗含在缩写中就可以随意使用Debian商标的想法”。上面没有列出网站的建立者，但一位该项目最近的领导者选举中的候选人，Debian开发人员马修·加雷特，被列在管理人员联系名单中。 </p>
<img src ="http://www.blogjava.net/justinlei/aggbug/19890.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/justinlei/" target="_blank">JustinLei</a> 2005-11-15 14:43 <a href="http://www.blogjava.net/justinlei/articles/19890.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用gnus 收发邮件、泡新闻组</title><link>http://www.blogjava.net/justinlei/articles/19886.html</link><dc:creator>JustinLei</dc:creator><author>JustinLei</author><pubDate>Tue, 15 Nov 2005 06:42:00 GMT</pubDate><guid>http://www.blogjava.net/justinlei/articles/19886.html</guid><wfw:comment>http://www.blogjava.net/justinlei/comments/19886.html</wfw:comment><comments>http://www.blogjava.net/justinlei/articles/19886.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/justinlei/comments/commentRss/19886.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/justinlei/services/trackbacks/19886.html</trackback:ping><description><![CDATA[<h2>设置新闻服务器</h2>
<p>启动 gnus 非常简单，在你的 Emacs 里执行 M-x
gnus 命令就可以了，如果你想在另一个 frame 里启动 gnus，那就执行 M-x gnus-other-frame
。但是，现在先别启动，因为我们先得进行一些配置。 gnus 启动的时候会去读你写在 ~/.gnus.el 里的内容，就像 Emacs
启动时要读 ~/.emacs 一样。当然你也可以把对 gnus 的配置写在 ~/.emacs 里，但是最好还是使用 gnus 自己的配置文件。
</p>
<p>首先，我们要设置新闻服务器，也就是 nntp 服务器， nntp 是 Network
News Transfer Protocal 的缩写，国内提供 nntp 服务的主机不多，教育网内能访问的nntp 服务器，我只找到了一个:
news.cn99.com，好了，现在就在 ~/.gnus.el 里加上这一句： </p>
<div class="sourceblock"><div class="elisp"><span class="br0">(</span><span class="kw1"><font color="#9020d0">setq</font></span> gnus-select-method '<span class="br0">(</span>nntp <span class="st0"><font color="#008000">"news.cn99.com"</font></span><span class="br0">)</span><span class="br0">)</span><br>&nbsp;<font color="#bb4444"><span class="co1">;; or news.yaako.com </span><br></font>&nbsp;</div></div>
<h2>设置邮件服务器</h2>
<p>现
在，我们进行接收邮件的设置。玩*nix 的老鸟都知道，*nix 的哲学是每个程序"Only do one thing, and do it
well." 因此就有了 sendmail, fetchmail, mailreader 等等一大票程序来干收发邮件这个活儿。严格地说
Emacs(gnus) 的分工是做 mailreader，也就是说我们用 emacs 来写信，然后由另一个程序，比如sendmail
来把信发出去；收信的过程也是类似的，由一个程序(比如 fetchmail) 负责把信取回来，放在一个 spool 里面，然后我们用 Emacs
来读信。你先别跑，我不是让你去配置 sendmail 这样的大怪物，我们平常发发信、收收信这点小活儿，用不着劳 sendmail
老人家的大驾。 </p>
<p>我们用的最多的邮件收发方式是这样的，有个 POP3 服务器，收信时我们到那里去取；有个 SMTP 服务器，发信时我们把信送到那里去。这点小活儿，现在 emacs 自己就可以搞定了。现在我们看看怎么设置： </p>
<p>首先我们设置 POP3 服务器： </p>
<div class="sourceblock"><div class="elisp"><span class="br0">(</span><span class="kw1"><font color="#9020d0">setq</font></span> mail-sources<br>&nbsp; &nbsp; &nbsp; '<span class="br0">(</span><span class="br0">(</span>pop :server <span class="st0"><font color="#008000">"pop.163.com"</font></span>&nbsp; &nbsp;<font color="#bb4444"><span class="co1">;; 在这里设置 pop3 服务器</span><br></font>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;:user <span class="st0"><font color="#008000">"brep"</font></span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <font color="#bb4444"><span class="co1">;; 用户名</span><br></font>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;:port <font color="#008000"><span class="st0">"pop3"</span><br></font>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;:password <span class="st0"><font color="#008000">"mypasswd"</font></span><span class="br0">)</span><span class="br0">)</span><span class="br0">)</span> <font color="#bb4444"><span class="co1">;; 密码 </span><br></font>&nbsp;</div></div>
<p>然后我们还要告诉 gnus 如何存放接收来的邮件， gnus 把这个叫做 backend，最常用的方式是 nnfolder，另外还有 nnmbox, nnml 等其它几种方式，我们选择其中一种就可以了： </p>
<div class="sourceblock"><div class="elisp"><span class="br0">(</span><span class="kw1"><font color="#9020d0">setq</font></span> gnus-secondary-select-methods '<span class="br0">(</span><span class="br0">(</span>nnfolder <span class="st0"><font color="#008000">""</font></span><span class="br0">)</span><span class="br0">)</span><span class="br0">)</span></div></div>
<p>然
后我们设置 SMTP 服务器，采用 smtp 方式发送邮件需要一个小程序 smtpmail.el, 这个程序现在已被纳入了官方的
Emacs，如果你用的是最新的 CVS Emacs，比如 Emacs22, Emacs23 等，就已经包含了这个程序。你可以检查一下
emacs 的安装目录中 lisp/mail/ 目录下有没有这个文件，如果没有的话，就只好自己下载、安装了。现在我们看看如何设置： </p>
<div class="sourceblock"><div class="elisp"><span class="br0">(</span><span class="kw1"><font color="#9020d0">setq</font></span> user-full-name <span class="st0"><font color="#008000">"Brep"</font></span><span class="br0">)</span> <font color="#bb4444"><span class="co1">;; 外发的邮件采用这个名字</span><br></font><span class="br0">(</span><span class="kw1"><font color="#9020d0">setq</font></span> user-mail-address <span class="st0"><font color="#008000">"brep@example.com"</font></span><span class="br0">)</span> <font color="#bb4444"><span class="co1">;;外发的邮件采用这个地址</span><br></font><span class="br0">(</span><span class="kw1"><font color="#9020d0">setq</font></span> smtpmail-auth-credentials<br>&nbsp; &nbsp; '<span class="br0">(</span><span class="br0">(</span><span class="st0"><font color="#008000">"smtp.163.com"</font></span>&nbsp; <font color="#bb4444"><span class="co1">;; SMTP 服务器</span><br></font>&nbsp; &nbsp; &nbsp; &nbsp;<font color="#a52a2a"><span class="nu0">25</span><br></font>&nbsp; &nbsp; &nbsp; &nbsp;<span class="st0"><font color="#008000">"brep"</font></span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <font color="#bb4444"><span class="co1">;; 用户名</span><br></font>&nbsp; &nbsp; &nbsp; &nbsp;<span class="st0"><font color="#008000">"mypasswd"</font></span><span class="br0">)</span><span class="br0">)</span><span class="br0">)</span>&nbsp; &nbsp;<font color="#bb4444"><span class="co1">;; 密码</span><br></font><span class="br0">(</span><span class="kw1"><font color="#9020d0">setq</font></span> smtpmail-default-smtp-server <span class="st0"><font color="#008000">"smtp.163.com"</font></span><span class="br0">)</span><br><span class="br0">(</span><span class="kw1"><font color="#9020d0">setq</font></span> smtpmail-smtp-server <span class="st0"><font color="#008000">"smtp.163.com"</font></span><span class="br0">)</span><br><span class="br0">(</span><span class="kw1"><font color="#9020d0">setq</font></span> message-send-mail-function 'smtpmail-send-it<span class="br0">)</span></div></div>
<h2>中文设置</h2>
<p>中文！中文！永远都是头痛的事儿。把下面这些加在 .gnus.el 里面吧： </p>
<div class="sourceblock"><div class="elisp"><span class="br0">(</span>set-language-environment 'Chinese-GB<span class="br0">)</span> <br><span class="br0">(</span><span class="kw1"><font color="#9020d0">setq</font></span> gnus-default-charset 'chinese-iso-8bit<br>&nbsp; &nbsp;gnus-group-name-charset-group-alist '<span class="br0">(</span><span class="br0">(</span><span class="st0"><font color="#008000">".*"</font></span> . chinese-iso-8bit<span class="br0">)</span><span class="br0">)</span><br>&nbsp; &nbsp;gnus-summary-show-article-charset-alist<br>&nbsp; &nbsp; &nbsp; &nbsp;'<span class="br0">(</span><span class="br0">(</span><span class="nu0"><font color="#a52a2a">1</font></span> . chinese-iso-8bit<span class="br0">)</span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="br0">(</span><span class="nu0"><font color="#a52a2a">2</font></span> . gbk<span class="br0">)</span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="br0">(</span><span class="nu0"><font color="#a52a2a">3</font></span> . big5<span class="br0">)</span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="br0">(</span><span class="nu0"><font color="#a52a2a">4</font></span> . utf-<span class="nu0"><font color="#a52a2a">8</font></span><span class="br0">)</span><span class="br0">)</span><br>&nbsp; &nbsp;gnus-newsgroup-ignored-charsets <br>&nbsp; &nbsp; &nbsp; &nbsp;'<span class="br0">(</span>unknown-8bit x-unknown iso-<span class="nu0"><font color="#a52a2a">8859</font></span>-<span class="nu0"><font color="#a52a2a">1</font></span><span class="br0">)</span><span class="br0">)</span></div></div>
<p>另外，有些用 web 方式发出的邮件里有 html，加入下面的设置，只看其中的plain text 部分： </p>
<div class="sourceblock"><div class="elisp"><span class="br0">(</span>eval-after-load <font color="#008000"><span class="st0">"mm-decode"</span><br></font>&nbsp; '<span class="br0">(</span><font color="#9020d0"><span class="kw1">progn</span><br></font>&nbsp; &nbsp; &nbsp;<span class="br0">(</span><span class="kw1"><font color="#9020d0">add-to-list</font></span> 'mm-discouraged-alternatives <span class="st0"><font color="#008000">"text/html"</font></span><span class="br0">)</span><br>&nbsp; &nbsp; &nbsp;<span class="br0">(</span><span class="kw1"><font color="#9020d0">add-to-list</font></span> 'mm-discouraged-alternatives <span class="st0"><font color="#008000">"text/richtext"</font></span><span class="br0">)</span><span class="br0">)</span><span class="br0">)</span></div></div>
<h2>订阅新闻组</h2>
<p>现在我们可以选择几个自己喜欢的新闻组，作为默认的新闻组： </p>
<div class="sourceblock"><div class="elisp"><span class="br0">(</span><span class="kw1"><font color="#9020d0">setq</font></span> gnus-default-subscribed-newsgroups <br>&nbsp; '<span class="br0">(</span><span class="st0"><font color="#008000">"gnu.emacs.help"</font></span>&nbsp; &nbsp; &nbsp;<font color="#bb4444"><span class="co1">;; 这里不错噢，有关 emacs 使用的问题都在这里讨论</span><br></font>&nbsp; &nbsp; <span class="st0"><font color="#008000">"cn.comp.os.linux"</font></span><span class="br0">)</span><span class="br0">)</span> <font color="#bb4444"><span class="co1">;; 这里也有一个 emacs 小团伙，</span><br></font>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<font color="#bb4444"><span class="co1">;; 有空去凑个热闹吧，中文的哟 </span><br></font>&nbsp;</div></div>
<h2>启动 gnus</h2>
<p>现在到了关键时刻，成败在此一举： </p>
<pre>  M-x gnus<br></pre>
<p>嘿嘿，傻眼了吧， Emacs 没反应了！！！ 没关系，表担心，这是正常现象，
gnus 是个单线程程序， nntp
服务器又慢的要命（你要是在公网，说不定能好点儿），多等一会儿就好了，一般也就两三分钟，运气不好的话还要长些，什么？你等不及了，要编辑文件？那就只
好麻烦您老再开一个 Emacs 吧！ </p>
<h2>Group buffer</h2>
<p>如果一切正常， gnus 启动完成的时候，我们就会看到 group buffer，这里列出了我们订阅的新闻组，类似这样： </p>
<div class="sourceblock"><div>49: gnu.emacs.help <br>6: cn.comp.os.linux <br>8: nndoc+gnus-help:gnus-help <br>0: nndraft:queue <br>0: nndraft:drafts<br></div></div>
<p>新闻组前面的数字，表示这个组里还有多少帖子没读过。现在，只要把光标移动到要读的新闻组上面，敲下回车键就可以读帖子了。 </p>
<p>不要 kill 掉这个 buffer 哟，我们经常需要回到这个 buffer 。如果你读完了新闻、信件，想退出 gnus，只要在这个 buffer 里按下 q 键就可以了。 </p>
<h2>Summary buffer</h2>
<p>当我们阅读某个新闻组的时候，就会进入 summary buffer，其中列出了作者和帖子的标题，如果是跟帖，会缩进表示，象下面这样： </p>
<div class="sourceblock"><div>[ 51: 空壳壳 ] 已调试好的 Emacs 下载(WIN 版本)<br>[ 283: 空壳壳 ] 这个包的.emacs 配置文件<br>[ 5: Brep ] <br>&lt; 4: watercloud &gt; Re: 已调试好的 Emacs 下载(WIN 版本)<br>[ 9: It's me FKtPp ;) ] <br>[ 2: 空壳壳 ] <br>[ 7: It's me FKtPp ;) ]<br></div></div>
<p>如果要读贴子，只要按下空格键就行了。按下 q 键将返回到 Group buffer. </p>
<h2>发帖、回帖</h2>
<p>在 newsgroup 里发帖子叫 post article, 发贴子很简单，只要我们按下 a 这一个键就可以了，写完后 C-c C-c 发出，如果写了一半儿想取消，则键入 C-c C-k 。 </p>
<p>在 newsgroup 回帖子叫 follow up，按下 f 键就行了，但是这样回帖并不引用原作者的文章，如果你想引用原作者的文章，那就用 F 键。 </p>
<p>如果你想和文章的作者私下聊聊，那就用 r 或者 R 键，给原作者回信叫做reply to, 这时只有原作者一个人能收到信，与 follow up 不同， follow up 的时候，凡是订阅了新闻组的人都能读到信。 </p>
<h2>我的信箱哪里去了?</h2>
<p>按照手册中的说法，我们通过 POP3 接收到的信件会被送到一个叫做 mail.misc 的组里， gnus 会自己建立这个组，但是我找了好几天也没找到。怎么办？没关系，我们自己建一个： </p>
<p>在 Group buffer 里，键入 G m，系统提示我们输入组名： mail.misc，然后提示我们输入 server 名，此时我们输入: nnfolder，注意，服务器名要与你选择的 backend 一致。 </p>
<p>建
立完成之后，我们可以在 Group buffer 里键入 ^，此时我们将进入 Server buffer,
在这里我们将看到自己选择的服务器，比如： news.cn99.com 。其中， nnfolder 服务器里应该有我们新建的 mail.misc
组。我们在服务器名上输入回车，这样就能看到这个服务器中的组，在想要订阅的组上面按下'u'键即可订阅这个组，取消订阅同样也是用这个键。 </p>
<h2>发信</h2>
<p>用 gnus 发信极其简单，随时都可以，按 m 一键搞定， gnus 会新建一个buffer 让我们写信 </p>
<div class="sourceblock"><div>To: 在这里添上收件人的 email<br>Subject: 在这里写上标题<br>From: Brep &lt;brep@example.com&gt;<br>--text follows this line-- 千万不要删除这一行<br></div></div>
<p>写完信后 C-c C-c 发出, 不想要了就 C-c C-k 。 </p>
<h2>大功告成了吗？</h2>
<pre> 现在我们已经完成基本任务了，但是大功告成了吗？<br> 没有！苦难才刚刚开始......<br><br> 我看到一篇很好的帖子，怎么才能保存下来？<br> 我想备份自己发出的所有信件，怎么办？<br> 我想删除信箱里的信件，怎么办？<br> 我的联系人很多，我想建个地址簿，怎么办？<br> 我想把不同的人发来的信，分别放在不同的信箱里，怎么办？<br></pre>
<h2>给帖子加标记</h2>
<p>你可能已
经注意到了，当你读过一个帖子之后， Gnus 会自动在帖子的最左边加上一个 R ，这就是标记。这些标记有些是我们自己加上的，有些是 Gnus
自动加上的。标记不止 R 一个，还有很多符号被 Gnus 用来当作标记符号。这些标记表明了帖子的状态，比如 R 表示这个帖子你已经读过了。 </p>
<p>现
在我们来看看常见的标记是什么意思。标记分为两大类，一类是“已读(read)”标记，一般用字母表示，比如 R, r, O, E
等等；另一类是“未读(unread)”标记，一般用特殊符号表示，比如 !, ?,
*等等。标记的数量比较多，但我们只要了解常见的几个标记是什么意思就行了。 </p>
<p>Gnus
之所以要把帖子分为“已读”和“未读”两类，是因为对这两类帖子，Gnus
采取的处理方式不同。如果一个帖子别标记为“已读”，那么当你离开这个group(用 q
命令)以后，下次再进入的时候，你就不会再见到它了（除非你要求gnus
把老帖翻出来给你看），只有那些被标记为“未读”的帖子和新帖才会显示给你看。 </p>
<h3>已读标记</h3>
<dl>
<dt>R </dt><dd>这个符号表示这篇帖子你的确已经读过了，每次你读完一篇帖子之后， Gnus 就会自动加上这个标记。 </dd><dt>r </dt><dd>这个标记表示是你自己手动把帖子标记为已读的，但实际上你可能并没读过。你可以用d 命令加这个标记。 </dd><dt>O </dt><dd>表示这是个老帖，上次进来的时候你已经读过了。那么怎么才能看到老贴呢，用 / o 命令，就可以把所有老贴翻出来看。 </dd>
</dl>
<h3>未读标记</h3>
<dl>
<dt>! </dt><dd>保
留(ticked)标记，带有这个标记的帖子将一直保持可见，如果你对某个贴子感兴趣，想留着以后读，可以加上这个标记，用 !
命令就行了。但是请注意，并不是说这种帖子就永久保留下来了，如果这个帖子被从管理员从 nntp 服务器上删除了，那么你就再也看不到它了。
nntp 服务器按照相应的设置，定期删除过期（ expired ）的老贴。 </dd><dt>? </dt><dd>休眠(dormant)标记，这个标记比较有意思，所谓一个帖子进入“休眠状态”，指的是除非有人跟帖，否则你以后不会见到这个帖子，也就是说，平常这个帖子和已读没有差别，但是一旦有人跟帖，它就会跳出来，用 ? 命令可以加上这个标记。 </dd><dt>空格 </dt><dd>如果一个帖子前面什么符号也没有，就表示这是一个“未读”的帖子。 </dd>
</dl>
<h3>清除所有标记</h3>
<p>用 M c 或者 Meta-u 清除所有标记，也就是说标记为“未读(unread)”。 </p>
<h2>保存有价值的帖子</h2>
<p>要想永久保存有价值的帖子，也就是说把帖子拷贝到自己的机器上保存起来，那么可以打开 gnus 的 cache 功能，在 .gnus.el 中加入： </p>
<div class="sourceblock"><div class="elisp"><span class="br0">(</span><span class="kw1"><font color="#9020d0">setq</font></span> gnus-use-cache 'passive<span class="br0">)</span></div></div>
<p>以后看到有价值的帖子，只要按下 * 键，这篇帖子就会被拷贝到本地的 cache 中保存起来，这样即使服务器那边删除了这篇帖子，也没关系了。如果你又不想要了，用 Meta-* 就可以把帖子从缓存中删掉。 </p>
<p>如果你想查看自己保存在缓存里的帖子，只要在 summary buffer 中用 'Y c' 命令即可。 </p>
<h2>邮件分类</h2>
<p>可能你每天都要收到大量的邮件，有的是亲朋好友寄来的，有的是你订阅的maillist 寄来的。如果这些邮件都放在 mail.misc 这一个组里，那么很快这里就会拥挤不堪了，说不定有些重要的信件会被漏看。 </p>
<p>在 Gnus 里，我们可以对收到的邮件进行分类，比如把所有来自 tsinghua.edu.cn 的信都放在 mail.tsinghua 这个组里。我们可以这样做： </p>
<p>首
先我们建一个 mail.tsinghua 组，在 Group buffer 里键入 G m , 然后输入 "mail.tsinghua",
接着系统会让我们选择 Method，此时输入"nnfolder"，这样 mail.tsinghua 这个组就建立好了。 </p>
<p>然后我们设置 nnmail-split-methods 变量，在 .gnus.el 中加入： </p>
<div class="sourceblock"><div class="elisp"><span class="br0">(</span><span class="kw1"><font color="#9020d0">setq</font></span> nnmail-split-methods <br>&nbsp; &nbsp; &nbsp; &nbsp;'<span class="br0">(</span><span class="br0">(</span><span class="st0"><font color="#008000">"mail.tsinghua"</font></span> <span class="st0"><font color="#008000">"^From:.*tsinghua.edu.cn"</font></span><span class="br0">)</span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="br0">(</span><span class="st0"><font color="#008000">"mail.misc"</font></span> <span class="st0"><font color="#008000">""</font></span><span class="br0">)</span><span class="br0">)</span><span class="br0">)</span></div></div>
<p>这
样以后凡是来自 tsinghua.edu.cn 的信件都会被放到 mail.tsinghua 这个组里去。这个变量的值是一个由 list
组成的 list，每个 list 由两个部分组成，前面的是组名，比如"mail.tsinghua", 后面的是个正则表达式， Gnus
会按这个正则表达式的要求到邮件里去搜索，然后把找到的邮件放在指定的组里面。 </p>
<p>这是一种简单的分类方式，如果你觉得不过瘾，可以试试 nnmail-split-fancy，那是一种更灵活的分类方式。 </p>
<p>需要注意的一点是，我们刚才用的术语都是“组(group)”，而没有说“邮件夹”。实际上，在 Gnus 里面组就是邮件夹，邮件夹就是组，我们说过， Gnus 采用同样的方式处理信件和新闻，因此它并不对组和邮件夹进行区分。 </p>
<p>既然是 group，那么你就可以取消订阅，假如你把女朋友的来信都放在mail.lovers 组里面，随后不小心 unsubscribe 了这个组，那么你就读不到她们的来信了，要是你的女朋友跟你分了手，千万别怪 Gnus，就像 Gnus 的手册里说的： </p>
<p>Gnus gives you all the opportunity you could possibly want for shooting yourself in the foot. </p>
<h2>保存自己发送的邮件</h2>
<p>基本上所有的邮件客户端都有一个“已发送邮件”或是“ sent ”的邮件夹，你自己写的信发送出去的同时，都会在这里都有一个备份，因为我们有时候需要看看自己发出去的信件。 </p>
<p>在 Gnus 里做到这一点很容易，而且它还可以自动把你发出去的邮件分分类，比如把发出去的信放在一个组里，把你在 newsgroup 里 post 的帖子放在另一个组里。 </p>
<p>现在我们看看怎么做到这一点，比如我们想把自己发的信备份到 mail.sent.mail 组里，把自己 post 的帖子备份到在 mail.sent.news 组里，那么首先我们建立这两个组： </p>
<p>在 group buffer 里键入 G m ，然后输入组名"mail.sent.mail", 接着是输入 "nnfolder", 这个组就建好了，然后用同样的方式建立"mail.sent.news"组。 </p>
<p>最后在.gnus.el 里加入： </p>
<div class="sourceblock"><div class="elisp"><span class="br0">(</span><span class="kw1"><font color="#9020d0">setq</font></span> gnus-message-archive-group<br>&nbsp; &nbsp; &nbsp; '<span class="br0">(</span><span class="br0">(</span><span class="kw1"><font color="#9020d0">if</font></span> <span class="br0">(</span>message-news-p<span class="br0">)</span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <font color="#008000"><span class="st0">"nnfolder:mail.sent.news"</span><br></font>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0"><font color="#008000">"nnfolder:mail.sent.mail"</font></span><span class="br0">)</span><span class="br0">)</span><span class="br0">)</span></div></div>
搞定了。 
<h2>删除邮件</h2>
<p>当你想删除一个邮件的时候，你先得搞清楚它是个 news 还是个 mail, 因为你是没有权力删除新闻组里的文章的，就象你上 BBS 的时候一样，就算你看到一篇不爽的帖子，你也删不了它，除非你是版主。 </p>
<p>在
这里我还要多一句嘴， newsgroup 管理的不像 bbs 那样严格， bbs
的每个版都有若干版主进行管理，删除无关的文章，封禁不按规矩发帖的人等等，象 joke 这种大板，有8个版主严阵以待，随时准备删贴封人。
newsgroup 是没有版主管理的，一般只有 nntp 服务器的管理员才有删帖的权力，但是一个 nntp 服务器上有成千上万的
group，管理员才没时间管删帖这种事儿呢，他们一般是制定一些规则，让系统自动删除一些过期的帖子。因此，如果你在 newsgroup
上发了个垃圾帖子，它就有可能在那里呆上好几年。 </p>
<p>正因为如此，我们在
newsgroup
上发帖子一定要慎重，不要发垃圾邮件什么的。更严重的是，如果你发了这种邮件，那么订阅这个组的人就会认为你很不礼貌，不懂规矩，他们可能就会在自己的
Gnus 里增加一条规则，从此以后凡是你发表的帖子，他们都不下载、不看。 </p>
<p>好了，言归
正传，我们谈谈怎么删除邮件。有两种方法可以删除邮件，一种是使用邮件专用命令｀ B DEL',
也就是现键入'B'，然后再按'Delete'键，这时系统会询问你是否真的要删除什么的，回答 yes 就可以了。但是这种方法太暴力了，在Gnus
里有一种更好的方法删除邮件，那就是给邮件加上“保质期”，也就是说，让Gnus
替你干删除邮件这个活儿，它会忠实地按照你的要求，删除“过了保质期”的邮件。 </p>
<p>怎样给邮件加上“保质期”呢，很简单，在邮件组的 summary buffer 里，用 E 键就可以给光标所在的邮件贴上 expirable 的标签，此时帖子前面会出现一个字母 E 作为标记，然后你就不用管了，到了期限， gnus 就会自动删除它们。 </p>
<p>你也可以用 E 命令，给新闻组里的帖子加上 expirable 的标签，但是这毫无意义，因为不论是你还是 Gnus 都无权删除新闻组里的帖子。 </p>
<p>Gnus 默认的保质期是7天，如果你觉得时间不合适，可以自己设置，更改变量 </p>
<pre> nnmail-expiry-wait 的值就行了，在 .gnus.el 里加入：<br></pre>
<div class="sourceblock"><div class="elisp"><span class="br0">(</span><span class="kw1"><font color="#9020d0">setq</font></span> nnmail-expiry-wait <span class="nu0"><font color="#a52a2a">3</font></span><span class="br0">)</span></div></div>
这样就把保质期设成3天了。 
<p>你还可以给不同的组设置不同的保质期，象下面这样： </p>
<div class="sourceblock"><div class="elisp"><span class="br0">(</span><span class="kw1"><font color="#9020d0">setq</font></span> nnmail-expiry-wait-function<br>&nbsp; <span class="br0">(</span><span class="kw1"><font color="#9020d0">lambda</font></span> <span class="br0">(</span>group<span class="br0">)</span><br>&nbsp; &nbsp; <span class="br0">(</span><span class="kw1"><font color="#9020d0">cond</font></span> <span class="br0">(</span><span class="br0">(</span>string= group <span class="st0"><font color="#008000">"mail.tsinghua"</font></span><span class="br0">)</span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="nu0"><font color="#a52a2a">31</font></span><span class="br0">)</span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">(</span><span class="br0">(</span>string= group <span class="st0"><font color="#008000">"mail.misc"</font></span><span class="br0">)</span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="nu0"><font color="#a52a2a">3</font></span><span class="br0">)</span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">(</span><span class="br0">(</span>string= group <span class="st0"><font color="#008000">"mail.lovers"</font></span><span class="br0">)</span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'never<span class="br0">)</span><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">(</span>t<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="nu0"><font color="#a52a2a">6</font></span><span class="br0">)</span><span class="br0">)</span><span class="br0">)</span><span class="br0">)</span></div></div>
<p>这
样就把 mail.tsinghua 这个组的保质期设为31天， mail.misc 组设为3天等等。除了数字，还有另外两个符号可以用，一个是
immediate ，表示立即删除标为过期的邮件；另一个是 never ，表示永不删除过期的邮件，“如果你一定要加个期限， Gnus
希望是一万年。” </p>
<h2>地址簿</h2>
<p>如果你的联系人比较多，没办法全部记住这些人的 email 地址，想建个地址簿，该怎么办呢？ </p>
<p>有两个种方法可以完成这个任务，一种是简单的，但是不太灵活；另一种麻烦点儿，但是功能很强。 </p>
<p>先说简单的，实际上这是一种很古老的方法了，那就是采用 mail alias （地址别名），你只要把联系人的邮件地址和别名都写在 ~/.mailrc 文件里就行了，语法很简单，每个联系人占一行，像下面这样： </p>
<div class="sourceblock"><div>alias brep "Brep &lt;brep@newsmth.org&gt;"<br>alias heyyy "和伊有约 &lt;heyyy@who.knows.where&gt;"<br>alias EOF "EOF &lt;EOF@god.knows&gt;"<br>alias ilovecpp "ilovecpp &lt;ilovecpp@please.tellme.ifyouknow&gt;"<br></div></div>
<p>发信的时候，在 To: 后面输入别名，比如 heyyy，然后按空格键， Gnus 会自动把全名替你插进去。 </p>
<p>然后我们再说复杂点儿的，其实也不复杂，只是麻烦点儿，要自己去下载一个软件包，到这里: </p>
<pre>  <a class="urllink" href="http://bbdb.sourceforge.net/" rel="nofollow">http://bbdb.sourceforge.net/</a> <br></pre>
<p>去下载一个叫做 bbdb 的软件包，全名是 "Insidious Big
Brother Database"。不知怎么搞的，现在一提数据库我就开始反胃，不过这个 bbdb 只是个 Emacs 扩展，全都是用
elisp 写成的，并不是那种巨无霸似的操作繁琐的数据库管理系统。bbdb 很小，压缩包只有300多 k 。 bbdb
只是建立了一个~/.bbdb 文件，然后把你的联系人每个一行地写在里面罢了，这是个纯文本文件，不过最好不要自己编辑这个文件，可以用 bbdb
的命令往里添加联系人。 </p>
<p>下载回来以后解开，然后 make 一下，象这样： </p>
<div class="sourceblock"><div>$ tar xzf bbdb-2.35.tar.gz<br>$ cd bbdb-2.35<br>$ ./configure --with-emacs=emacs --with-gnus-dir=/usr/share/emacs/23.0.0/lisp/gnus/<br>$ make gnus<br></div></div>
<p>然后把 bbdb-2.35 目录下的 lisp 子目录整个扔到 site-lisp 下面就行了： </p>
<div class="sourceblock"><div>$ cp -r lisp/ /usr/share/emacs/23.0.0/site-lisp/<br></div></div>
<p>还有文档，如果你要看的话也要自己装： </p>
<div class="sourceblock"><div>$ cd texinfo/ &amp;&amp; make <br>$ cp bbdb.info /usr/share/info<br>$ cd /usr/share/info<br>$ install-info bbdb.info<br></div></div>
<p>如果你觉得太麻烦了，也可以解开压缩包后，直接把 lisp/ 子目录整个扔到 site-lisp 下面， bbdb 的手册中说可以这样，不过我没试过。 </p>
<p>好了，把下面这些写在 .gnus.el 里面： </p>
<div class="sourceblock"><div class="elisp"><span class="br0">(</span><span class="kw1"><font color="#9020d0">require</font></span> 'bbdb<span class="br0">)</span><br><span class="br0">(</span>bbdb-initialize 'gnus 'message<span class="br0">)</span><br><br><font color="#bb4444"><span class="co1">;; bbdb 自己检查你填写的电话是否符合北美标准，</span><br><span class="co1">;; 如果你不是生活在北美，应该取消这种检查</span><br></font><span class="br0">(</span><span class="kw1"><font color="#9020d0">setq</font></span> bbdb-north-american-phone-numbers-p nil<span class="br0">)</span><br><br><font color="#bb4444"><span class="co1">;; 把你的 email 地址告诉 bbdb </span><br></font><span class="br0">(</span><span class="kw1"><font color="#9020d0">setq</font></span> bbdb-user-mail-names<br>&nbsp; &nbsp; &nbsp; <span class="br0">(</span>regexp-opt '<span class="br0">(</span><font color="#008000"><span class="st0">"brep@example.com"</span><br></font>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0"><font color="#008000">"brep@newsmth.org"</font></span><span class="br0">)</span><span class="br0">)</span><span class="br0">)</span><br><font color="#bb4444"><span class="co1">;; 补全 email 地址的时候循环往复</span><br></font><span class="br0">(</span><span class="kw1"><font color="#9020d0">setq</font></span> bbdb-complete-name-allow-cycling t<span class="br0">)</span><br><font color="#bb4444"><span class="co1">;; No popup-buffers</span><br></font><span class="br0">(</span><span class="kw1"><font color="#9020d0">setq</font></span> bbdb-use-pop-up nil<span class="br0">)</span></div></div>
<p>然后重新启动 Gnus, 或者是在 Group buffer 中用 r 键，让 Gnus 重新读入~/.gnus.el </p>
<p>bbdb
使用起来很简单，第一次用的时候，要用"M-x bbdb-create"命令创建联系人，此时 bbdb 会问你一些相关的问题，比如联系人的
Name, company, Network Address(这里要添 email 地址)等等，你如实回答就是了。然后 bbdb
会创建一个~/.bbdb 文件，并把你的联系人加进去。 </p>
<p>以后你可以随时用"M-x bbdb-create"命令添加联系人，也可以用 `M-x bbdb RET RET' 命令让 bbdb 把所有联系人显示给你看。 </p>
<p>不过， bbdb 最方便的地方在于你写信的时候，只要在 To: 面用 TAB 键， bbdb 就会把联系人替你填好，如果不对，就继续按 TAB 键， bbdb 会填下一个，循环往复。 </p>
<p>还有一个方便的地方，如果你在 Summary buffer 中的某个邮件或帖子上按 : 建， bbdb 将自动把发信人替你加到地址簿里，方便吧！ </p>
<h2>结束语</h2>
<p>说了这么多，也只是把Gnus最基本的功能介绍了一下，实际上，Gnus还有很多高级的功能可以发掘。那就去读 Gnus 的 manual 吧，我觉得 Gnus 的手册写的真不错，语言诙谐幽默，读起来趣味盎然。 </p>
<p>当你用了一段时间 Gnus 以后，你就很难再离开它了，那时候你就会理解下面这句话： </p>
<p>No Gnus is bad news. </p>
<img src ="http://www.blogjava.net/justinlei/aggbug/19886.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/justinlei/" target="_blank">JustinLei</a> 2005-11-15 14:42 <a href="http://www.blogjava.net/justinlei/articles/19886.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Debian输入法 SCIM 配置文件</title><link>http://www.blogjava.net/justinlei/articles/19883.html</link><dc:creator>JustinLei</dc:creator><author>JustinLei</author><pubDate>Tue, 15 Nov 2005 06:39:00 GMT</pubDate><guid>http://www.blogjava.net/justinlei/articles/19883.html</guid><wfw:comment>http://www.blogjava.net/justinlei/comments/19883.html</wfw:comment><comments>http://www.blogjava.net/justinlei/articles/19883.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/justinlei/comments/commentRss/19883.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/justinlei/services/trackbacks/19883.html</trackback:ping><description><![CDATA[下载scim<br>
<br>
(root权限)：apt-get install scim.*<br>
<br>
(root权限)：在/etc/X11/Xsession.d目录下创建文件95xinput<br>
<br>
内容：<br>
export XMODIFIERS=@im=SCIM ; export GTK_IM_MODULE=scim ; scim -d <img src ="http://www.blogjava.net/justinlei/aggbug/19883.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/justinlei/" target="_blank">JustinLei</a> 2005-11-15 14:39 <a href="http://www.blogjava.net/justinlei/articles/19883.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>让Ubuntu默认显示MAC风格的圆体字体</title><link>http://www.blogjava.net/justinlei/articles/19877.html</link><dc:creator>JustinLei</dc:creator><author>JustinLei</author><pubDate>Tue, 15 Nov 2005 06:29:00 GMT</pubDate><guid>http://www.blogjava.net/justinlei/articles/19877.html</guid><wfw:comment>http://www.blogjava.net/justinlei/comments/19877.html</wfw:comment><comments>http://www.blogjava.net/justinlei/articles/19877.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/justinlei/comments/commentRss/19877.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/justinlei/services/trackbacks/19877.html</trackback:ping><description><![CDATA[UBUNTU默认显示的是XP风格的字体,所以就算安装了圆体,9~13号字显示的还是新宋字体,要让UBUNTU默认显示MAC圆体<br>
<br>
1.下载圆体 ttf-vera-yuan_0.10-3ubuntu1_all.deb<br>
ubuntu.cn99.com有下载<br>
<br>
2.修改/etc/fonts/fonts.conf<br>
内容:<br>
注释掉XP风格字体<br>
&lt;!-- Win XP 效果&nbsp;
<br>
&lt;match target="font"&gt;
<br>
&nbsp;&nbsp; &lt;test name="family"&gt;&lt;string&gt;Vera Sans YuanTi&lt;/string&gt;&lt;/test&gt;
<br>
&nbsp;&nbsp; &lt;edit name="globaladvance"&gt;&lt;bool&gt;false&lt;/bool&gt;&lt;/edit&gt;
<br>
&lt;/match&gt;
<br>
&nbsp;<br>
&lt;match target="font"&gt;
<br>
&nbsp;&nbsp; &lt;test name="family"&gt;&lt;string&gt;Vera Sans YuanTi Mono&lt;/string&gt;&lt;/test&gt;
<br>
&nbsp;&nbsp; &lt;edit name="globaladvance"&gt;&lt;bool&gt;false&lt;/bool&gt;&lt;/edit&gt;
<br>
&lt;/match&gt;
<br>
&nbsp;<br>
&lt;match target="font"&gt;
<br>
&nbsp;&nbsp; &lt;test qual="any" name="family"&gt;&lt;string&gt;Vera Sans YuanTi&lt;/string&gt;&lt;/test&gt;
<br>
&nbsp;&nbsp; &lt;edit name="antialias" mode="assign"&gt;&lt;bool&gt;true&lt;/bool&gt;&lt;/edit&gt;
<br>
&nbsp;&nbsp; &lt;edit name="hinting" mode="assign"&gt;&lt;bool&gt;false&lt;/bool&gt;&lt;/edit&gt;
<br>
&nbsp;&nbsp; &lt;edit name="autohint" mode="assign"&gt;&lt;bool&gt;false&lt;/bool&gt;&lt;/edit&gt;
<br>
&nbsp;&nbsp; &lt;edit name="hintstyle" mode="assign"&gt;&lt;const&gt;hintnone&lt;/const&gt;&lt;/edit&gt;
<br>
&nbsp;&nbsp; &lt;edit name="rh_prefer_bitmaps" mode="assign"&gt;&lt;bool&gt;false&lt;/bool&gt;&lt;/edit&gt;
<br>
&lt;/match&gt;
<br>
&nbsp;<br>
&nbsp;<br>
&lt;match target="font"&gt;
<br>
&nbsp;&nbsp; &lt;test qual="any" name="family"&gt;&lt;string&gt;Vera Sans YuanTi&lt;/string&gt;&lt;/test&gt;
<br>
&nbsp;&nbsp; &lt;test compare="more_eq" name="pixelsize" qual="any" &gt;&lt;double&gt;12&lt;/double&gt;&lt;/test&gt;
<br>
&nbsp;&nbsp; &lt;test compare="less_eq" name="pixelsize" qual="any" &gt;&lt;double&gt;16&lt;/double&gt;&lt;/test&gt;
<br>
&nbsp;&nbsp; &lt;edit name="antialias" mode="assign"&gt;&lt;bool&gt;false&lt;/bool&gt;&lt;/edit&gt;
<br>
&nbsp;&nbsp; &lt;edit name="hinting" mode="assign"&gt;&lt;bool&gt;true&lt;/bool&gt;&lt;/edit&gt;
<br>
&nbsp;&nbsp; &lt;edit name="autohint" mode="assign"&gt;&lt;bool&gt;false&lt;/bool&gt;&lt;/edit&gt;
<br>
&nbsp;&nbsp; &lt;edit name="hintstyle" mode="assign"&gt;&lt;const&gt;hintfull&lt;/const&gt;&lt;/edit&gt;
<br>
&nbsp;&nbsp; &lt;edit name="rh_prefer_bitmaps" mode="assign"&gt;&lt;bool&gt;true&lt;/bool&gt;&lt;/edit&gt;
<br>
&lt;/match&gt;
<br>
&nbsp;<br>
&lt;match target="font"&gt;
<br>
&nbsp;&nbsp; &lt;test qual="any" name="family"&gt;&lt;string&gt;Vera Sans YuanTi Mono&lt;/string&gt;&lt;/test&gt;
<br>
&nbsp;&nbsp; &lt;edit name="antialias" mode="assign"&gt;&lt;bool&gt;true&lt;/bool&gt;&lt;/edit&gt;
<br>
&nbsp;&nbsp; &lt;edit name="hinting" mode="assign"&gt;&lt;bool&gt;false&lt;/bool&gt;&lt;/edit&gt;
<br>
&nbsp;&nbsp; &lt;edit name="autohint" mode="assign"&gt;&lt;bool&gt;false&lt;/bool&gt;&lt;/edit&gt;
<br>
&nbsp;&nbsp; &lt;edit name="hintstyle" mode="assign"&gt;&lt;const&gt;hintnone&lt;/const&gt;&lt;/edit&gt;
<br>
&nbsp;&nbsp; &lt;edit name="rh_prefer_bitmaps" mode="assign"&gt;&lt;bool&gt;false&lt;/bool&gt;&lt;/edit&gt;
<br>
&lt;/match&gt;
<br>
&nbsp;<br>
&lt;match target="font"&gt;
<br>
&nbsp;&nbsp; &lt;test qual="any" name="family"&gt;&lt;string&gt;Vera Sans YuanTi Mono&lt;/string&gt;&lt;/test&gt;
<br>
&nbsp;&nbsp; &lt;test compare="more_eq" name="pixelsize" qual="any" &gt;&lt;double&gt;12&lt;/double&gt;&lt;/test&gt;
<br>
&nbsp;&nbsp; &lt;test compare="less_eq" name="pixelsize" qual="any" &gt;&lt;double&gt;16&lt;/double&gt;&lt;/test&gt;
<br>
&nbsp;&nbsp; &lt;edit name="antialias" mode="assign"&gt;&lt;bool&gt;false&lt;/bool&gt;&lt;/edit&gt;
<br>
&nbsp;&nbsp; &lt;edit name="hinting" mode="assign"&gt;&lt;bool&gt;true&lt;/bool&gt;&lt;/edit&gt;
<br>
&nbsp;&nbsp; &lt;edit name="autohint" mode="assign"&gt;&lt;bool&gt;false&lt;/bool&gt;&lt;/edit&gt;
<br>
&nbsp;&nbsp; &lt;edit name="hintstyle" mode="assign"&gt;&lt;const&gt;hintfull&lt;/const&gt;&lt;/edit&gt;
<br>
&nbsp;&nbsp; &lt;edit name="rh_prefer_bitmaps" mode="assign"&gt;&lt;bool&gt;true&lt;/bool&gt;&lt;/edit&gt;
<br>
&lt;/match&gt;
<br>
--&gt;
<br>
<br style="font-weight: bold;">
<span style="font-weight: bold;">开启MAC风格字体<br><br>&lt;!-- Mac OS X 效果 --&gt;
<br>&lt;match target="font"&gt;
<br>&nbsp;&nbsp; &lt;test name="family"&gt;&lt;string&gt;Vera Sans YuanTi&lt;/string&gt;&lt;/test&gt;
<br>&nbsp;&nbsp; &lt;edit name="globaladvance"&gt;&lt;bool&gt;false&lt;/bool&gt;&lt;/edit&gt;
<br>&lt;/match&gt;
<br>&nbsp;<br>&lt;match target="font"&gt;
<br>&nbsp;&nbsp; &lt;test name="family"&gt;&lt;string&gt;Vera Sans YuanTi Mono&lt;/string&gt;&lt;/test&gt;
<br>&nbsp;&nbsp; &lt;edit name="globaladvance"&gt;&lt;bool&gt;false&lt;/bool&gt;&lt;/edit&gt;
<br>&lt;/match&gt;
<br>&nbsp;<br>&lt;match target="font"&gt;
<br>&nbsp;&nbsp; &lt;edit name="antialias" mode="assign"&gt;&lt;bool&gt;true&lt;/bool&gt;&lt;/edit&gt;
<br>&nbsp;&nbsp; &lt;edit name="hinting" mode="assign"&gt;&lt;bool&gt;false&lt;/bool&gt;&lt;/edit&gt;
<br>&nbsp;&nbsp; &lt;edit name="autohint" mode="assign"&gt;&lt;bool&gt;false&lt;/bool&gt;&lt;/edit&gt;
<br>&nbsp;&nbsp; &lt;edit name="hintstyle" mode="assign"&gt;&lt;const&gt;hintnone&lt;/const&gt;&lt;/edit&gt;
<br>&nbsp;&nbsp; &lt;edit name="rh_prefer_bitmaps" mode="assign"&gt;&lt;bool&gt;false&lt;/bool&gt;&lt;/edit&gt;
<br>&lt;/match&gt;
</span><img src ="http://www.blogjava.net/justinlei/aggbug/19877.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/justinlei/" target="_blank">JustinLei</a> 2005-11-15 14:29 <a href="http://www.blogjava.net/justinlei/articles/19877.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>让kpdf支持中文</title><link>http://www.blogjava.net/justinlei/articles/19878.html</link><dc:creator>JustinLei</dc:creator><author>JustinLei</author><pubDate>Tue, 15 Nov 2005 06:29:00 GMT</pubDate><guid>http://www.blogjava.net/justinlei/articles/19878.html</guid><wfw:comment>http://www.blogjava.net/justinlei/comments/19878.html</wfw:comment><comments>http://www.blogjava.net/justinlei/articles/19878.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/justinlei/comments/commentRss/19878.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/justinlei/services/trackbacks/19878.html</trackback:ping><description><![CDATA[<p>1.下载XPDF和中文插件<br><br>2.修改~/.xpdfrc<br>内容:<br><br>#========================================================================<br>#<br># System-wide xpdfrc file<br>#<br># The Xpdf tools look for a config file in two places:<br># 1. ~/.xpdfrc<br># 2. /etc/xpdf/xpdfrc<br>#<br># Note that if ~/.xpdfrc exists, Xpdf will NOT read the system<br># configuration file /etc/xpdf/xpdfrc. You may wish to include it<br># from your ~/.xpdfrc using:<br>#&nbsp;&nbsp;&nbsp; include /etc/xpdf/xpdfrc<br># and then add additional settings.<br>#<br># For complete details on config file syntax and available options, <br># please see the xpdfrc(5) man page.<br>#<br># http://www.foolabs.com/xpdf/<br>#<br>#========================================================================<br><br>#----- display fonts<br><br># These map the Base-14 fonts to the Type 1 fonts that ship with<br># ghostscript (gsfonts package).<br><br>displayFontT1 Times-Roman&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; /usr/share/fonts/type1/gsfonts/n021003l.pfb<br>displayFontT1 Times-Italic&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; /usr/share/fonts/type1/gsfonts/n021023l.pfb<br>displayFontT1 Times-Bold&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; /usr/share/fonts/type1/gsfonts/n021004l.pfb<br>displayFontT1 Times-BoldItalic&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; /usr/share/fonts/type1/gsfonts/n021024l.pfb<br>displayFontT1 Helvetica&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; /usr/share/fonts/type1/gsfonts/n019003l.pfb<br>displayFontT1 Helvetica-Oblique&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; /usr/share/fonts/type1/gsfonts/n019023l.pfb<br>displayFontT1 Helvetica-Bold&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; /usr/share/fonts/type1/gsfonts/n019004l.pfb<br>displayFontT1 Helvetica-BoldOblique&nbsp;&nbsp;&nbsp; /usr/share/fonts/type1/gsfonts/n019024l.pfb<br>displayFontT1 Courier&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; /usr/share/fonts/type1/gsfonts/n022003l.pfb<br>displayFontT1 Courier-Oblique&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; /usr/share/fonts/type1/gsfonts/n022023l.pfb<br>displayFontT1 Courier-Bold&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; /usr/share/fonts/type1/gsfonts/n022004l.pfb<br>displayFontT1 Courier-BoldOblique&nbsp;&nbsp;&nbsp; /usr/share/fonts/type1/gsfonts/n022024l.pfb<br>displayFontT1 Symbol&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; /usr/share/fonts/type1/gsfonts/s050000l.pfb<br>displayFontT1 ZapfDingbats&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; /usr/share/fonts/type1/gsfonts/d050000l.pfb<br><br># If you need to display PDF files that refer to non-embedded fonts,<br># you should add one or more fontDir options to point to the<br># directories containing the font files.&nbsp; Xpdf will only look at .pfa,<br># .pfb, and .ttf files in those directories (other files will simply<br># be ignored).<br><br>#fontDir&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; /usr/local/fonts/bakoma<br><br>#----- PostScript output control<br><br># Set the default PostScript file or command.<br><br>psFile&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; "|lpr"<br><br># Set the default PostScript paper size -- this can be letter, legal,<br># A4, or A3.&nbsp; You can also specify a paper size as width and height<br># (in points). Xpdf uses the paper size in /etc/papersize by default.<br><br>#psPaperSize&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; letter<br><br>#----- text output control<br><br># Choose a text encoding for copy-and-paste and for pdftotext output.<br># The Latin1, ASCII7, and UTF-8 encodings are built into Xpdf.&nbsp; Other<br># encodings are available in the language support packages.<br><br>#textEncoding&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; UTF-8<br><br># Choose the end-of-line convention for multi-line copy-and-past and<br># for pdftotext output.&nbsp; The available options are unix, mac, and dos.<br><br>#textEOL&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; unix<br><br>#----- misc settings<br><br># Enable Type 1 font rasterizing with t1lib. Default "yes".<br><br>#enableT1lib&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; no<br><br># Enable TrueType and Type 1 font rasterizing with FreeType. Default "yes".<br><br>#enableFreeType&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; no<br><br># Enable anti-aliasing of fonts. Default "yes".<br><br>#antialias&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; no<br><br># Set the command used to run a web browser when a URL hyperlink is<br># clicked.<br><br>urlCommand&nbsp;&nbsp;&nbsp; "sensible-browser '%s'"<br><br># Include the language configuration file list generated by update-xpdfrc<br>include /etc/xpdf/includes<br>
</p>

             <img src ="http://www.blogjava.net/justinlei/aggbug/19878.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/justinlei/" target="_blank">JustinLei</a> 2005-11-15 14:29 <a href="http://www.blogjava.net/justinlei/articles/19878.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VIM</title><link>http://www.blogjava.net/justinlei/articles/19869.html</link><dc:creator>JustinLei</dc:creator><author>JustinLei</author><pubDate>Tue, 15 Nov 2005 06:18:00 GMT</pubDate><guid>http://www.blogjava.net/justinlei/articles/19869.html</guid><wfw:comment>http://www.blogjava.net/justinlei/comments/19869.html</wfw:comment><comments>http://www.blogjava.net/justinlei/articles/19869.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/justinlei/comments/commentRss/19869.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/justinlei/services/trackbacks/19869.html</trackback:ping><description><![CDATA[&nbsp;什么人适合使用 VIM ？<br>
追 求编 辑 效 率的 程序员<br>
VIM 的作者是程序员<br>
他为程序员开发了许多有用的功能<br>
其 它经 常 处 理纯 文本的 人 员<br>
中小型企业 Web 开发人员<br>
编写 LaTeX 文档的研究人员<br>
Unix / Linux 系统管理员<br>
<br>
什么人不适合使用 VIM ？<br>
生 活、 工 作 和学 习无需 和 纯 文本 打 交道 的 人<br>
处理其它类型的文件有专门的工具<br>
打 字速 度 慢 于智 能感知 运 行 速度 的 人<br>
VIM 目前暂不支持智能感知<br>
被强大的 IDE 惯坏了的人<br>
强大顺手的 IDE 比方便快捷的编辑器更重要<br>
<br>
<br>
Linux 下中文处理<br>
编 辑时 不 能 输入 中文<br>
:set encoding=cp936<br>
菜 单显 示 是 乱码<br>
:so $VIMRUNTIME/delmenu.vim<br>
:so $VIMRUNTIME/menu.vim<br>
<br>
<br>
选择喜欢的字体<br>
通 过菜 单 与 对话 框选择 字 体<br>
编辑 ­­&gt; 选择字体<br>
只有等宽字体可以被选中<br>
适合程序员使用的字体基本原则<br>
Bitstream Vera Sans Mono<br>
0Oo 1Il<br>
记 住选 中 的 字体 名称<br>
:set guifont?<br>
将显示结果抄下来备用<br>
<br>
<br>
VIM 基本操作<br>
VIM 是一个有模式的编辑器<br>
Normal 模式下按键序列对应命令<br>
按 i 键进入 Insert 模式<br>
按 : 进入 command 模式<br>
Insert 模式下可以输入文本<br>
按 ESC 回到 Normal 模式<br>
Command 模式下输入命令<br>
有模式导致 VIM 快捷键长度较短<br>
<br>
<br>
使用 hjkl<br>
VIM 支持使用方向键移动光标<br>
在 insert 状态下移动光标会比较方便<br>
使 用 h jk l 移 动 光 标 编 辑 效 率 更 高<br>
距离近，按键方便，眼睛无需离开屏幕<br>
<br>
<br>
vimtutor<br>
vimtutor 是 VIM 入门非常好的学习材料<br>
Linux 用户<br>
在终端中输入 vimtutor<br>
启动字符界面的 vimtutor<br>
W in d o ws 用 户<br>
在开始菜单中找 vimtutor 快捷方式<br>
启动后出现乱码，重新选择一个中文字体即可<br>
<br>
<br>
查找替换<br>
准 备工 作<br>
打开 VIM ，按 i ，输入：<br>
this is a test<br>
查 找替 换<br>
按 ESC 回到 normal 状态，输入：<br>
:%s/ /^M/g<br>
其中 ^M 使用 Ctrl­v Ctrl­m 的方式输入<br>
将所有空格替换为回车，文本变为 4 行<br>
<br>
<br>
行的拼接<br>
查 找 \n 替 换 为 空 格 可 以 实 现 拼 接<br>
这 里使 用 j 命 令拼 接 行<br>
按 ggVG ，全选<br>
按 : ，此时命令行显示为：<br>
:'&lt;,'&gt;<br>
在其后输入 j ，回车<br>
拼接完毕<br>
<br>
<br>
复制粘贴与重复动作<br>
在 normal 状态下按 yy ，复制当前行<br>
按 1 2 p ， 屏幕 上 即 出现 1 3 行 上述 字 样<br>
12 表示将其后的命令执行 12 次<br>
p 表示粘贴到当前行之后<br>
VIM 里大部分命令都可以加上数字表明执行次数<br>
<br>
<br>
列操作<br>
选 中全 文 第 一列<br>
按 gg 跳到开头<br>
按 Ctrl­v 进入列选择状态<br>
按 G 跳到末尾<br>
将 每行 第 一 列变 为大写<br>
按 U 表示把选中内容变大写<br>
按 u 表示把选中内容变小写<br>
按 ~ 表示翻转原有大小写<br>
在 每行 前 面 加一 个星号 和 一 个空 格<br>
选中第一列<br>
按 I 进入插入状态<br>
输入 * ，按 ESC<br>
选 中前 两 列 后按 x ， 可以 进 行 列删 除<br>
编程时可以用于批量注释和批量解注释<br>
<br>
<br>
宏的录制<br>
将 所 有 偶 数 行 的 a 改 成 an o th er<br>
录 制宏<br>
按 gg 进入第一行<br>
按 qm 进入宏录制状态，录制到寄存器 m<br>
按 j 进入第二行，按 $ 跳到行末<br>
按 2b ，光标停在字母 a 上<br>
按 caw ，输入 another ，按 ESC ，按 j 进入下一行<br>
按 q 结束宏的录制<br>
<br>
<br>
宏的播放<br>
单 次播 放<br>
按下 @m ，执行 m 寄存器中的宏<br>
可以发现第 4 行的 a 也变成了 another<br>
多 次播 放<br>
输入 1000@m<br>
可以发现所有偶数行的 a 都变成了 another<br>
到达文件底部时宏执行出错，会自动停止<br>
最终并没有真的执行 1000 次<br>
<br>
<br>
点命令<br>
在 每行 末 尾 添加 一个感 叹 号<br>
执 行次 数 不 多的 简单操 作 无 需使 用 宏<br>
按 gg 进入第一行，按 A 进入行尾添加状态<br>
输入 ! ，按 ESC ，按 j 进入第二行<br>
按 . 表示重复前一个操作，即行尾添加 !<br>
反复按 j.j.j.j.<br>
推荐大家左手鼠标<br>
:%s/$/!/g<br>
<br>
<br>
VIM 入门<br>
2 1 天 学习 计 划<br>
多读文档，少走弯路<br>
第一周：每天一遍 vimtutor<br>
熟悉基本操作，做到随心所欲<br>
第 二周 、 第 三周 ：通读 用 户 手册<br>
读用户手册的同时修订出适合自己的 .vimrc<br>
目前手册有中文版译本可供下载<br>
<br>
<img src ="http://www.blogjava.net/justinlei/aggbug/19869.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/justinlei/" target="_blank">JustinLei</a> 2005-11-15 14:18 <a href="http://www.blogjava.net/justinlei/articles/19869.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>