经常在 Putty 里连到服务器写代码,不像其他大多数人使用 Vi/Vim 来编辑文件,我使用 Emacs。这样问题就来了,一来现在的 Linux 发行版默认都不带 Emacs,除了安装需要耗费时间以外,emacs 这个命令使用起来过长,并且 Emacs 的配置文件如果一大,Emacs 的启动速度还是受一点影响,另外,默认的 Emacs 配色在 Putty 下也是有一点问题的。

总之,Emacs 如果想在 Putty 下使用得爽的话,还得做一番配置。今天就简单分享一下我自己在 Putty 里使用 Emacs 时做的一些最基本的配置,希望能对 Emacs 新手有帮助。

Putty 下配置 Emacs 小缓冲区 (minibuffer)的颜色

默认情况下,在 Putty 里使用 Emacs,当在 minibuffer 里有系统提示信息时,会显示深蓝色,这和黑色背景显然是不搭配的,导致提示信息看不清楚。我们肯定不会把 Putty 的黑色背景改变成浅颜色的,不然用起来多难受呀。我们只有修改一下 minibuffer 的颜色了:

<pre class="src src-emacs-lisp">(set-face-foreground 'minibuffer-prompt <span style="color: #95e454">"white"</span>)

<p>
  这样就解决了撞色的问题。
</p></p>

Putty 下快速简便地启动 Emacs

终端或是 Putty 下,不喜欢反复开启或是关闭 Emacs,这个时候,可以开启 Emacs Server,并且使用 emacsclient 来把文件发送到 Emacs Server 从而实现编辑文件,当关闭了该文件后, emacsclient 才会返回,让命令行得以继续编辑。

<p>
  什么,这样还是太麻烦,还有更简单的办法吗?这时可以使用 <a href="http://emacser.com/daemon.htm">Emacs daemon</a>:
</p>

<blockquote>
  <p>
    Emacs daemon 就是为了这个而诞生的。它将 Emacs 变成了一个 C/S 模型——只需要启动一个服务器在后台作为守护进程(daemon)跑着,之后启动的每个 emacs 都是一个客户端,它连接上服务器进行工作。这样一来,只要在启动服务器时运行初始化脚本,客户端启动无需运行脚本,实现启动时间从 Firefox 到 Chrome 的转变。
  </p>
</blockquote>

<p>
  先用命令把 Emacs Server 跑起来:
</p>

<pre class="src src-shell-script">emacs -daemon

<p>
  以后在需要编辑文件的地方,直接可以用 emacsclient 来快速打开文件了:
</p>

<pre class="src src-shell-script">emacsclient test.c

<p>
  如果你觉得 emacsclient 太长的话,可以给这个命令设置一个别名。然后我们编辑 ~/.bashrc 文件,添加如下内容:
</p>

<pre class="src src-emacs-lisp">#use ec as alias for emacs client

alias ec=‘emacsclient -t -a ""

#use emacs as default editor export EDITOR=“ec”

<p>
  以后就可以用 ec 命令来编辑文件了,同样也不用先手动启动 emacs server。
</p>

<p>
  当然,如果你是经常使用 ssh 来远程登陆主机,那还是<a href="http://stackoverflow.com/questions/820517/bashrc-at-ssh-login">需要在 .bash_profile 里加上这么一条</a>:
</p>

<pre class="src src-shell-script"><span style="color: #8ac6f2;font-weight: bold">if</span> [ -f ~/.bashrc ]; <span style="color: #8ac6f2;font-weight: bold">then</span>

. ~/.bashrc fi

<p>
  这样的话,当你 ssh 登陆主机的时候,.bashrc 里的设置才会被引导,ec 这个命令才能代表 emacsclient。
</p>

<p>
  有些人可能对 .bashrc 和 .bash_profile 的区别不是太理解,可以看看<a href="http://mywiki.wooledge.org/DotFiles">这篇文章</a>。
</p></p>

给你的 elisp 文件建立一个代码库

相信大家肯定是要在很多台服务器上工作,比如说生产环境、测试环境、虚拟机等等,这些机器可能是不相通的。这个时候,你要在上面使用 Emacs,没有配置文件可怎么办?有一个办法很简单地解决了这个问题,那就是找一个代码版本管理库,比如说 GitHub 或是 Bitbucket,把你的 Emacs 配置文件放在自己的代码库里,到了一台服务器上,就从里面 clone 一份 elisp 配置出来。

<p>
  一般来说,你可以把你的 elisp 主配置文件放在一个名叫 common.el 的文件里,然后你可以在 .emacs 里<a href="http://blog.waterlin.org/articles/setting-emacs-home-directory.html">写上 load-file 来引导真正的 emacs 配置</a>。通过这种方式,你到了一台新机器上,只需要把 elisp 代码 clone 下来,然后引导这个目录里的 common.el 文件即可。
</p>

<p>
  因为是在服务器上写东西,自然最好不要把一些和代码编辑不相关的配置放到这个代码库里,比如说 org mode 的配置等。还是专心写代码吧!
</p></p>

一些杂项

  1. 终端下打开 Emacs 菜单:F10 或是命令 M-x menu-bar-open;
  2. 在 Emacs 里写东西的时候,想查一下 shell 里的东西,这时可以不用退出 Emacs 而直接用 eshell,只用 M-x eshell 就可以启动,功能整合了操作系统自带的终端,退出 eshell 可以输入 exit 也可以 kill-buffer。