Putty 下使用 Emacs 的几个配置技巧
技术
经常在 Putty 里连到服务器写代码,不像其他大多数人使用 Vi/Vim 来编辑文件,我使用 Emacs。这样问题就来了,一来现在的 Linux 发行版默认都不带 Emacs,除了安装需要耗费时间以外,emacs 这个命令使用起来过长,并且 Emacs 的配置文件如果一大,Emacs 的启动速度还是受一点影响,另外,默认的 Emacs 配色在 Putty 下也是有一点问题的。
总之,Emacs 如果想在 Putty 下使用得爽的话,还得做一番配置。今天就简单分享一下我自己在 Putty 里使用 Emacs 时做的一些最基本的配置,希望能对 Emacs 新手有帮助。
Putty 下配置 Emacs 小缓冲区 (minibuffer)的颜色
<p>
默认情况下,在 Putty 里使用 Emacs,当在 minibuffer 里有系统提示信息时,会显示深蓝色,这和黑色背景显然是不搭配的,导致提示信息看不清楚。我们肯定不会把 Putty 的黑色背景改变成浅颜色的,不然用起来多难受呀。我们只有修改一下 minibuffer 的颜色了:
</p>
<pre class="src src-emacs-lisp">(set-face-foreground 'minibuffer-prompt <span style="color: #95e454">"white"</span>)
<p>
这样就解决了撞色的问题。
</p></p>
Putty 下快速简便地启动 Emacs
<p>
终端或是 Putty 下,不喜欢反复开启或是关闭 Emacs,这个时候,可以开启 Emacs Server,并且使用 emacsclient 来把文件发送到 Emacs Server 从而实现编辑文件,当关闭了该文件后, emacsclient 才会返回,让命令行得以继续编辑。
</p>
<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 文件建立一个代码库
<p>
相信大家肯定是要在很多台服务器上工作,比如说生产环境、测试环境、虚拟机等等,这些机器可能是不相通的。这个时候,你要在上面使用 Emacs,没有配置文件可怎么办?有一个办法很简单地解决了这个问题,那就是找一个代码版本管理库,比如说 <a href="https://github.com/">GitHub</a> 或是 <a href="https://bitbucket.org">Bitbucket</a>,把你的 Emacs 配置文件放在自己的代码库里,到了一台服务器上,就从里面 clone 一份 elisp 配置出来。
</p>
<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>
一些杂项
<ol>
<li>
终端下打开 Emacs 菜单:F10 或是命令 M-x menu-bar-open;
</li>
<li>
在 Emacs 里写东西的时候,想查一下 shell 里的东西,这时可以不用退出 Emacs 而直接用 eshell,只用 M-x eshell <RET> 就可以启动,功能整合了操作系统自带的终端,退出 eshell 可以输入 exit <RET> 也可以 kill-buffer。
</li>
</ol>