[原创] Emacs on Windows初步实践

Emacs是个好东西,最近我在Windows下也用起了Emacs,是因为有很多特定类型文件的语法高亮显示很好用,例如Apache Pig文件,Thrift文件在Emacs中都有了现成的语法高亮支持,等等,如果你用Notepad++等文本编辑器就必须自己编写语法高亮规则了(会累死你)。
文章来源:http://www.codelast.com/
下面记录一下Emacs Windows版从安装到基础配置的过程。

(1)下载,安装
下载:在这个链接中,找最新版的下载,例如我下载的是emacs-24.1-bin-i386.zip。
安装:其实把压缩包解压出来就可以了,谁都会。解压出来之后,运行一次bin目录下的addpm.exe ——它的作用是添加启动菜单和修改注册表。

(2)配置主目录
这是Windows版的Emacs比Linux版的Emacs要麻烦的地方之一。
我们需要手工修改注册表。定位到注册表的 HKEY_LOCAL_MACHINE/SOFTWARE/GNU/Emacs 处,如果没有则手工一级级添加。新建一个“字符串值”,名为“HOME”(不含引号),值为你的Emacs安装目录,例如“C:/emacs”。这样就设置好了Emacs的主目录。

(3)运行Emacs
运行bin目录下的 runemacs.exe 可启动Emacs。
启动后,点击“Options”菜单,修改一个简单的设置,然后点击“Save Options”,Emacs就会在安装目录下生成 .emacs.d 目录以及 .emacs 文件。如果没有在安装目录下生成(例如,我在64位Win7下使用32位的Emacs就遇到了这样的问题),那么请检查是否生成在了这个目录下:
C:\Users\用户名\AppData\Roaming\
如果有,那么就把这个目录当作配置文件目录就行了。
我们知道 .emacs 文件是最重要的Emacs配置文件之一,我们可以在里面定义Emacs的快捷键等。

(4)配置Pig语法高亮以及Thfirt文件语法高亮支持
如果你使用Apache PigApache Thrift,那么你一定需要Emacs的语法高亮支持。为了给大家提供方便,我直接在这里提供语法高亮定义文件的压缩包,点击此处下载。如果你要查看原版出处,请分别点击这个链接(Pig)和这个链接(Thrift)。
将此压缩包解压到Emacs安装目录下,生成两个文件:.piglatin.el 和 .thrift-mode.el 。然后修改 .emacs 文件,添加如下两行:

(load-file "~/.piglatin.el")
(load-file "~/.thrift-mode.el")

重启Emacs,打开一个Pig文件或Thrift文件,会发现已经有语法高亮了:

文章来源:http://www.codelast.com/
(5)如何配置Emacs的背景色(theme)?
初次打开Emacs,会发现背景色白花花的一片,这与我们在Linux下常用的黑色背景色相差太大了,一点也不geek,所以当然要改掉它。
点击菜单“Options”→“Customize Emacs”→“Custom Themes”,会打开一个新的buffer,在里面你可以用键盘操作来设置风格:

按键盘的方向键,将光标移动到要选择的选项上,按Enter键选中它,然后再把光标移动到“Save Theme Settings”按钮上,按Enter键保存此设置。
最后再按 Ctrl+x,k,Enter(先按Ctrl+x,再按k键,再按回车键)来关闭这个设置theme的buffer即可。

(6)复制、粘贴文本
如果只通过键盘命令来操作,恐怕不是那么容易操作的事情:
首先你要将文本复制到缓冲区,在Emacs中要先选中一段文本,才能开始复制。标记选中文本的起始点是通过按组合键Ctrl+Shift+非小键盘的2(即Ctrl+@)来实现的,然后,将光标移动到要复制文本的结束点,会发现选中的区域变色了,这时,再按组合键Meta+w来完成复制操作。
这里有一个概念,什么是Meta键?请参考这个Wiki链接。简言之,现代键盘上已经没有Meta键了,你可以通过按下,再放开Ecs键来模拟Meta键,所以上面所说的 Meta+w 组合键的操作就是:按下Ecs键,放开Ecs键,按下w键(极麻烦,是吧?)。
复制好文本之后,将光标移动到要粘贴的地方,按下 Ctrl+y 组合键即可粘贴,这个操作倒是相当简单。

(7)输入TAB
在编辑器中输入TAB,在很多配置情况下,也不是直接按TAB键就可以的。你可以用这种方法输入TAB:先按Ctrl+q组合键,再按TAB键,就可以成功插入一个制表符了。

(8)配置auto-complete(自动完成/自动补全)
这里所说的自动完成,只是指使用这个Emacs插件实现的,如果你要让Emacs能自动补全标准库里的C++函数,那么在Windows下怎么做我还没试(Linux可参考这篇文章的第【6】项)。
先下载链接里的自动完成插件压缩包,解压到某目录下,例如,我解压到了 F:\auto-complete-1.3.1 目录下。
在Widnows命令行中切换到Emacs的bin目录,执行如下命令(执行过程中会询问你安装路径):

emacs -batch -l F:\auto-complete-1.3.1\etc\install.el
Install to: C:\Users\XXX\AppData\Roaming\.emacs.d\auto-complete

其中,C:\Users\XXX\AppData\Roaming\.emacs.d\ 是你用于存放Emacs配置文件的目录,在Windows 7下通常是这个目录(XXX是指你的用户名),.emacs配置文件位于 C:\Users\XXX\AppData\Roaming\ 目录下。auto-complete是我自己创建的子目录。
最后一步,将如下配置添加到Emacs配置文件.emacs中:

(add-to-list 'load-path "c:/Users/XXX/AppData/Roaming/.emacs.d/auto-complete")
(require 'auto-complete-config)
(add-to-list 'ac-dictionary-directories "c:/Users/XXX/AppData/Roaming/.emacs.d/auto-complete/ac-dict")
(ac-config-default)

这里要注意,上面的路径里用的是/,而不是Windows下的\,如果你用\,会在重新打开Emacs之后提示错误。
再打开Emacs试试,就有自动完成功能了。

(9)让Emacs打开一个非XML后缀的文件时以XML语法高亮
在Emacs中执行命令:

M-x nxml-mode

即可让Emacs以XML语法来高亮当前文件(无论当前文件是什么格式的)。
文章来源:http://www.codelast.com/
(10)批量注释一段代码
先mark任意一段代码,然后用以下命令来注释mark的所有代码:

M-x comment-region

(11)切换只读模式/正常模式

C-x C-q

(12)显示行号
如果Emacs默认没有显示行号,可通过在.emacs配置文件中添加下面一句话来显示:

(setq column-number-mode t)

(13)配置PHP语法高亮
Emacs默认是没有PHP语法高亮的,可通过加载扩展来实现。首先下载此Emacs扩展,将压缩包中的 
php-mode.el 放到你的.emacs配置文件同一目录下,将其重命名为 .php-mode.el(当然你也可以不这样做)。然后在.emacs配置文件中,添加一句:

(load-file "~/.php-mode.el")

再重新用Emacs打开一个PHP文件,就会发现已经有语法高亮了。
文章来源:http://www.codelast.com/
(14)给选中区域的每一行第一列添加同样的字符串
假设有三行:

1111
2222
3333

要给每一行的行首添加上“abc”,除了一行行地去写之外,有没有更简单的办法(想像一下有100行要处理的情景)?
方法是:先选中这些行(注意:选中的区域要使得光标移动到第2行的行首处,即最后一个要插入字符串的行是无须完全选中的),然后使用命令:

M-x string-rectangle

回车,输入你要在行首插入的字符串“abc”,再回车,效果立现:

abc1111
abc2222
abc3333

(15)如何配置Emacs,使得输入TAB时,用空格替代
默认情况下,在Emacs中按一下TAB,就是输入TAB,如果我们想让它输入的是空格(并且可以指定按一下TAB输入几个空格),可以在.emacs中这样配置:

(add-hook 'sh-mode-hook
  '(lambda () (setq sh-basic-offset 2)))

注意:上面的配置设置了按一下TAB输入2个空格,并且它只对shell脚本生效!这是因为不同类型的文件对应的配置是不同的,sh-mode-hook使得只对shell生效。

文章来源:https://www.codelast.com/
➤➤ 版权声明 ➤➤ 
转载需注明出处:codelast.com 
感谢关注我的微信公众号(微信扫一扫):

wechat qrcode of codelast

《[原创] Emacs on Windows初步实践》有2条评论

发表评论