最新版Emacs(version 23.x)攻略

随便写点关于最新版emacs的新功能。

Client/Server模式

如果你用过GNU Screen的话,这个emacs的client/server模式就不是什么新东西。

好处:

快速启动
系统随时都有一个emacs server,所以启动只需要调用一个emacsclient,基本上可以做到即时启动。而且如果你大部分editing都使用emacs,单一server多个client的模式也大大减少了需要占用的系统资源。
各窗口之间的协同
多个emacsclient连上的是同一个server,所以可以非常方便的调用其他buffer里的内容,比如说共用一个kill ring,又比如说多个R程序可以调用同一个R解释器等等。
彻底打破了X窗口和terminal之间的分界线
我习惯在xterm下用emacs -nw快速编辑一点小文件,但也喜欢在图形化界面下编辑一些相对复杂的文件。使用C/S模式,就可以完美自然的融合这两者了。这一点,也可以说是emacs自己的C/S模式要好过screen + emacs -nw的一个理由吧。

基本用法:

  1. Emacs内的启动方式:启动了emacs之后, M-x server-start
  2. 命令行:emacs –daemon
  3. 给server取名字(跑多个server的时候很有用):M-x set-variable server-name
  4. 连接server: 1) terminal下,emacsclient -t filename; 2) X window, emacsclient -c filename.
  5. 杀死server: M-x kill-emacs
  6. 其他有用参数:-n, no-wait, 写script/alias时很有用;-s server-name, 连到某个指定的(本地)server;-a nano, 万一连不上emacs,fall back to某个editor (nano).
  7. 连接远程server:这个需要让emacs的server支持tcp才行。我试过,可以连上,但它的behavior远不是我想要的。和screen相比,目前emacs的这个远程连接功能还远不成熟。希望等到下一个版本能够得到改进吧。

新的字体渲染模式

从22.x开始,emacs的底层编码就换到了unicode。到了23.x, 又把字体渲染引擎从老的X corefonts (bitmap字体)换到了XFT。这样一来,基本上可以说你的gtk程序能用什么字体,emacs就可以用什么字体了。但因为向下兼容的原因,老的字体配置仍然有效。下面我两种都举个例子。

老的字体渲染:

~/.Xresources

Emacs.font:fontset-global Emacs.Fontset-0:-adobe-courier-medium-r-*-*-14-*-*-*-*-*-fontset-global,\
utf8:-*-wenquanyi bitmap song-*-*-*-*-*-*-*-*-*-*-iso10646-*,\
chinese-gbk:-*-wenquanyi bitmap song-*-*-*-*-*-*-*-*-*-*-iso10646-*,\
chinese-gb2312:-*-wenquanyi bitmap song-*-*-*-*-*-*-*-*-*-*-iso10646-*

新的字体渲染:

~/.Xresources

Emacs.font: Monospace-11

简单吧?你可能会问,那中文显示字体呢?答案是就和别的gtk程序一样,你的xft系统的字体排序如何,emacs就调用系统排序。所以,最佳的解决方案是学会编辑.fonts.conf,设定全局字体排序。

如果你觉得emacs的字体配置最好是独立于全局字体配置,你也可以在emacs本身的配置文件里面实现:

~/.emacs

(if (window-system)
(progn (set-default-font "Courier New-10")
(set-fontset-font (frame-parameter nil 'font)
'han '("WenQuanYi Bitmap Song" . "unicode-bmp")
)) nil)

其他有用的改进

  • visual-lines-mode, 相当于notepad里头的"word wrap"功能。这玩意比以前的longlines-mode强多了。
  • org-mode现在变成emacs的一部分了。
  • 新的line number mode (linum-mode)
  • 在emacs里直接看pdf/ps文件(doc-view-mode)
  • dbus integration. 通俗点说就是你可以用elisp来控制别的程序。这个网站有一个简单的用elisp来控制tomboy的例子: http://emacs-fu.blogspot.com/2009/01/using-d-bus-example.html

  1. 发表评论

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s

%d 博主赞过: