无拘无束的猪

一只无拘无束会飞的猪
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Emacs的一些事情(与Vi的争议及使用)

Posted on 2015-05-06 20:51  无拘无束的猪  阅读(414)  评论(0编辑  收藏  举报

一年成为Emacs高手(像神一样使用编辑器)推荐文章

http://ftp.gnu.org/gnu/emacs/windows/
http://blog.csdn.net/redguardtoo/article/details/7222501/

1.vi与Emacs的不同

 

viEmacs
快捷键命令 vi通过记录按键序列,形成决策树中的一条路径,从而确定一个命令。 Emacs通过组合键的方式立即执行命令。
内存占用和定制性 由于历史原因,vi小而快,但定制性上比较受限。 Emacs启动慢且占用更多内存,但高度可定制,包含大量复杂功能。它基本上是一个Lisp程序的执行环境。
用户界面 vi早先独占命令行终端,没有图形用户界面(GUI)。后来的衍生版本,如MacVim和gVim,都具备全功能的GUI。 Emacs,最初也为终端设计,但很早就具备了GUI,现代版本提供众多GUI版本。
功能/导航 vi具名明确的编辑模式。 Emacs采用功能键组合。

 

vi类型编辑器的优点

  • 遵循“简单工具,多样组合”的理念。
  • 小,符合Unix哲学中的“只做一件事,并做好它”,避免了功能蔓延。
  • 比Emacs快(至少历史上是这样的)。
  • 可运行于任何实现了C标准库的系统之上,包括UNIX、Linux、AmigaOS、DOS、Windows、Mac、BeOS和POSIX兼容系统等等。
  • 让“QWERTY”键盘用户将手指保持在默认键位上,使编辑时手指移动更少。
  • 更普及。基本上所有Unix和类Unix系统都默认提供了vi或其变体。

Emacs的优点

  • 符合“厨房水槽”理念,提供了比vi更多的功能。
  • 移植最广泛的非试用计算机程序之一。它能在各种操作系统上运行,包括大多数类Unix系统(GNU/Linux、各种BSD、Solaris、AIX、IRIX、AmigaOS、Mac OS X[1][2]等)、MS-DOS、Microsoft Windows和OpenVMS。Unix系统,无论自由版本或商业版本,均随系统提供Emacs。
  • 可扩展和可定制(Lisp的变体 - Emacs Lisp),功能包括:
    • 专门的编辑模式,支持大量编程语言、标记语言、排版语言,如Bash、C、Delphi、Java、Lisp、LaTeX、MediaWiki、Python等。
    • 可模拟vi(“viper-mode”)。
    • 强大可扩展的文件管理器(dired)、智能调试器和大量工具。

 

2.Windows下的Emacs安装与配置

 

1、下载
到这个网址可以下载到Emacs的windows版本:http://ftp.gnu.org/pub/gnu/emacs/windows/
只需要一个压缩文档,如emacs-22.3-bin-i386.zip

2、安装
在D盘根目录下新建一个文件夹,取名Emacs22.2(也可以是其他路径,随个人喜好而定),将emacs-22.2-bin-i386.zip里的文件解压到这个目录下,这样在d:/Emacs22.2/下就有bin, tec, info, leim, lisp, site-lisp等目录。

双击bin文件夹里的addpm.exe进行安装,安装后将在开始菜单生成Gnu Emacs/Emacs链接,点击这个链接便可启动Emacs。也可以双击bin文件夹里的runemacs.exe启动。注意到bin目录里还有个文件是emacs.exe,双击它也可以启动,但是会出现一个控制台窗口

3、修改注册表
打开注册表,找到HKEY_LOCAL_MACHINE/SOFTWARE/GNU/Emacs(如果没有则手动添加项),在此项下添加字符串值,名称为HOME,值为D:/Emacs22.2。这样做的目的是让D:/Emacs22.2成为Emacs的home路径(传说中的home path,以后你将会经常看到“home目录”、“home directory”等等)。

4、创建.emacs.d目录和.emacs文件
相信.emacs.d目录和.emacs文件是困扰大家很久的问题了,其实有个简单的办法可以解决此问题。启动emacs,用鼠标点击Options菜单,随便点击一两个选项,比如点击一下Active Region Highlighting,然后点击Save Options。先不要担心你会破坏了什么东西,这样做的目的是让emacs自动创建.emacs.d目录以及.emacs文件!观察你的Emacs窗口最后一行,是否显示“Wrote d:/Emacs22.2/.emacs”?如果是的话就对了,当你选择Save Options的时候,Emacs会在home路径下产生.emacs文件,并把配置信息写进这个文件。现在看看你的d:/Emacs22.2/目录下是否产生了这两个东西?

5、加载.el文件
lisp目录下存放着lisp源文件(*.el)和已编译的lisp文件(*.elc),以后你也可以将自己的.el文件放在这个目录下,然后还要在.emacs文件插入相关语句。比如你有一个文件叫做abcd.el,将它复制到lisp目录下,然后打开.emacs文件插入一句(require 'abcd)就可以了(包括圆括号,不需要扩展名.el)。

如果你不喜欢lisp文件夹,也可以自己新建一个,比如在home目录下建一个文件夹叫做xyz,然后把abcd.el放在xyz目录下,在.emacs文件插入以下两句:
(setq load-path (cons "~/xyz" load-path))
(require 'abcd)
第一句告诉emacs先加载你的xyz目录,第二句再加载abcd.el。注意“~/”是linux系统的用法,表示home目录。
如果你和我一样在学习《Sams Teach Yourself Emacs in 24 Hours》这本书的话,我想你一定需要sams-lib.el这个文件!可以到这个网址下载:
http://www.cs.virginia.edu/~wh5a/personal/Emacs/
找到sams-lib.el之后右键点击“目标另存为”就可以了!

 

以上的之中:路径及环境变量的设置,也就是HOEM值得设置有些矛盾,跟cadence的工作路径矛盾了,后面就把cadence的路径改了。

 

3. 初学者使用Emacs的难点

1 配置成神一样的编辑器要花很多时间

抄高手的配置,不要抱着玩玩的心态在低水平上创新.

 
Steve Purcell的配置 https://github.com/purcell/emacs.d
Matt Briggs的配置 https://github.com/mbriggs/.emacs.d
我的配置(抄Steve Purcell的,加中文和C++支持) https://github.com/redguardtoo/emacs.d

2 太难看

安装emacs24,然后看这:http://www.emacswiki.org/emacs/ColorTheme

3 记不住那么多命令,打字太烦

安装Smex,记住你最常用的命令,只要打命令中的关键字就可以匹配.使用Smex后我基本不再设置快捷键.

4 没有非用不可的功能,总能找到替代品

Org Mode是非常优秀的软件,可以用来做笔记,做GTD,写文档.我没有找到替代品.

5 对Vi用户来说快捷键陌生且低效

安装Evil,emacs版的vim(注意,不是vi),结合Vi的高效和Emacs的强大的编辑器,完美了.

6 对普通用户来说快捷键陌生

试着适应吧,Emacs比Notepad出生的早,所以你不能怪Emacs.

7 Ctrl键太难按

交换Caps Lock和左Ctrl.

8 不知道怎么看帮助

 
快捷键说明
C-h v 按变量名查找
C-h f 按函数名查找
C-h k 按快捷键查找

9 恩,有时候我要用代理(Emacs很多功能需网络)

在bash下:

export http_proxy=http://127.0.0.1:8000; emacs

使用socks server和tsocks:

tsocks emacs

4.史上最强的vimrc文件,据说有800行,还是作者精简后的结果.

我在尽可能保留原作者的创意的前提下做了些小的修正,主要的修改如下:

 

  • 增加了对win32系统的兼容,原来的vimrc文件只兼容linux和mac

  • 修正了一些快捷键,例如ctr-q被原作者用来搜索buffer,用过win32版本vim的都知道ctrl-q被用来作为块编辑的快捷键,所以ctrl-q是万万不能被移做他用的.

  • 去掉了colorscheme,原作者的colorscheme对我来说实在是太geeky,我想软件默认的colorscheme就该是最适合大多数人的.

  • 启用了swap文件,因为我的机器配置太低,而且我经常要编辑大文件

  • 取消了所有和python有关的plugin,因为一些路径问题,也因为我觉得vim对python的支持够强大了(事实是,我缺乏用python写大项目的经验).

  • 增加了对中文编码的支持,参考了吴咏炜的一篇文章

  • 兼容低版本vi,目前我在vim5.8.9, vim6.1,vim6.3, vim6.4,vim7.0, 上测试过。
  • 其他一些通用性,兼容性的修正

  • 去掉了输入([{时的自动填入右括号的功能,在我修改代码时增加很多麻烦.

 

我强烈建议你通读这个vimrc文件,一定会很有收获的,至少我是如此.