感谢支持
我们一直在努力

Emacs 入门指引

Emacs是什么?


Emacs是一种功能超强的文本处理程序,或者文本编辑器。作者Richard Stallman(主页:http://stallman.org/)。基础部分是使用C语言编写的,其他部分是用Emacs Lisp编写的。深层次的话,C语言构成了emacs的底层,包括Emacs Lisp的解释器。而Emacs Lisp则是负责了Emacs Lisp的建筑物上层,也就是包括我们平时用的扩展、界面等。


Emacs只是一文本编辑器,这和Windows上的Visual Studio等等不同的是,VS集成的是完整的开发功能,包括编译器、编辑器、调试器等等。而Emacs只是一个文本编辑器,当然不要因此而是否定Emacs的强大。Emacs可以做的:


  收发电子邮件、通过FTP/TRAMP编辑远程档案、通过Telnet登录主机、上新闻组、登陆IRC和朋友交流


  查看日历、撰写文章大纲


  对多种编程语言的编辑、调试程序,结合GDB,EDebug等。支持C/C++,Perl,Python,Lisp等等


  玩游戏、计算器、记日记


  煮咖啡、管理日程,Task,ToDo,约会等、个人信息管理、目录管理


  文件比较、阅读info和man文档、浏览网站


他确实只是一个文本处理器,你可以将之视为伪编辑器的操作系统。而这是因为其与unix/linux系统的整合程度而起的,换句说,如果Richard Stallman可以早点开发出内核,而不是等到Linux的话。Linux/Unix的设计思想之一就是:简单,使用足够的小程序来支撑起这世界,而是Emacs所做的就是利用这些工具,来打造自己,完成自己的系统。因而,Emacs强大的另一点是,有足够的扩展,无论是过去的auto-complete或者是现在的Android-mode等等。故而,我们可以在《架构之美》之中看到关于其的介绍,而是他的特性也是如此,滋长的特性是其优势。


也因些,Emacs是Unix世界的两大神器之一,另外一个是Vim/Vi。


Emacs是什么样的?


如图:



Emacs的设计预想是需要时只需要启动一次,然后一直运行着。我们可以使用C-x-2,C-x-3对窗口进行分割,打开多个文件进行编辑。Emacs的三种基本对象是:帧(frame)、窗口(window)、缓冲区(buffer)。


帧是Emacs对计算机图形界面中窗口的称呼。将上图分为三个部分,分别是显示了Emacs的介绍,可浏览的目录列表及展示Lisp交互界面的缓冲区(buffer)。而是最下面的那一行,则是输入命令的地方。


窗口是帧的一部分,要创建一个新的窗口,只能通过将原有窗口分成两个,当关闭某个窗口时,将把空间给邻近的窗口。这样的结果是一个帧中的窗口始终会填满整个帧的内容。只有对键盘命令进行响应,窗口是轻量级的,在使用时会频繁地创建和关闭。


缓冲区是用来保存可编辑的文本内容。Emacs将会把打开的文本内容保存在缓冲区中,但缓冲区中的内容并不一定必须与某个文件关联:它可能包括搜索结果、在线文档,以及刚输入还没有保存到任何文件中的内容。每个窗口将显示某些缓冲区的内容,而一个缓冲区可能保存0个、1个或多个窗口。


还有一个很重要的地方,那就是除了每个窗口底部的模式行以及其他类似的东西,Emacs在向用户显示文本信息时会将其放在缓冲区中,然后将缓冲区的内容显示在某些窗口中。帮助信息、搜索结果、目录列表以及其他类似的的内容,保存在缓冲区中的内容都有相应的名称。

获取Emacs

现在的版本是:24.1,详细可见:http://www.gnu.org/software/emacs/。支持的操作系统有:























       
GNU FreeBSD Solaris MS Windows
GNU/Linux NetBSD Mac OS X MS DOS
GNU/kFreeBSD OpenBSD AIX  

获取Emacs


  • Windows:    http://ftp.gnu.org/pub/gnu/emacs/windows/
  • Mac OsX:    http://emacsformacosx.com/
  • Unix/Linux:可使用自带的软件包管理。例如Ubuntu的:sudo apt-get install Emacs

安装方法:Windows直接解压就可以使用。Ubuntu安装完即可使用,Mac OSX同。如果下载的是源码包  (ftp://ftp.gnu.org/gnu/emacs/),则需要编译。

配置Emacs

Windows下需要对进行Home目录,修改及配置。


  • 如果设置了HOME环境变量,那么就用它的值作为home目录~
  • 如果存在注册表键值HKCU\SOFTWARE\GNU\Emacs\HOME,就用它的值作为home目录~
  • 如果存在注册表键值HKLM\SOFTWARE\GNU\Emacs\HOME,就用它的值作为home目录~(和2的区别是,2只是针对当前用户的注册表路径,3则是针对所有用户)
  • 如果存在C:\.emacs,就用C:\作为home目录~
  • 如果以上都不存在的话,就使用\Users\\AppData\Roaming作为home目录~(对于XP和较早windows用户,需要到Documents and Settings目录下去找)

Mac OSX,及类Unix系统都是是在默认的用户目录下,也就是HOME下的个人文件夹。默认的emacs配置文件有三个(详细可参考:http://www.gnu.org/software/emacs/manual/html_node/emacs/Init-File.html即:


  • ~/.emacs
  • ~/.emacs.el
  • ~/.emacs.d/init.el

我们通常用.emacs文件进行配置,不过一些比较主流的是放置于.emacs.d文件夹下。不过虽然是叫配置文件,官方的叫法是初始化文件。网上搜索的,可参考的一些简单的自定义及配置:


  1. (set-cursor-color “white”)   

  2. ;; 鼠标颜色设置为白色   

  3. (set-mouse-color “white”)   

  4. ;; 设置背景颜色和字体颜色   

  5. (set-foreground-color “white”)   

  6. (set-background-color “darkblue”)   

  7. ;; 设置另外一些颜色:语法高亮显示的背景和主题,区域选择的背景和主题,二次选择的背景和选择   

  8. (set-face-foreground ‘highlight “white”)   

  9. (set-face-background ‘highlight “blue”)   

  10. (set-face-foreground ‘region “cyan”)   

  11. (set-face-background ‘region “blue”)   

  12. (set-face-foreground ‘secondary-selection “skyblue”)   

  13. (set-face-background ‘secondary-selection “darkblue”)   

  14. ;;设置日历的一些颜色   

  15. (setq calendar-load-hook   

  16.     ‘(lambda ()   

  17.     (set-face-foreground ‘diary-face “skyblue”)   

  18.     (set-face-background ‘holiday-face “slate blue”)   

  19.     (set-face-foreground ‘holiday-face “white”)))  

 


  1. ;;外观设置   

  2. ;;去掉工具栏   

  3. (tool-bar-mode nil)   

  4. ;;去掉菜单栏,我将F10绑定为显示菜单栏,万一什么东西忘了,需要菜单栏了可以摁F10调出,再摁F10就去掉菜单   

  5. (menu-bar-mode nil)   

  6. ;;不要滚动栏,现在都用滚轴鼠标了,可以不用滚动栏了   

  7. (scroll-bar-mode nil)   

  8.   

  9. ;;备份设置   

  10. ;;emacs还有一个自动保存功能,默认在~/.emacs.d/auto-save-list里,这个非常有用,我这里没有改动,具体可以参见Sams teach yourself emacs in 24hours(我简称为sams24)   

  11. ;;启用版本控制,即可以备份多次   

  12. (setq version-control t)   

  13. ;;备份最原始的版本两次,记第一次编辑前的文档,和第二次编辑前的文档   

  14. (setq kept-old-versions 2)   

  15. ;;备份最新的版本五次,理解同上   

  16. (setq kept-new-versions 5)   

  17. ;;删掉不属于以上7中版本的版本   

  18. (setq delete-old-versions t)   

  19. ;;设置备份文件的路径   

  20. (setq backup-directory-alist ‘((“.” . “~/.emacs.tmp”)))   

  21. ;;备份设置方法,直接拷贝   

  22. (setq backup-by-copying t)   

  23.   

  24. ;;自动补全功能,这事从王垠的网站直接Copy过来的,引用一些他对此的说明   

  25. ;;你可以设置以下 hippie-expand 的补全方式。它是一个优先列表, hippie-expand 会优先使用表最前面的函数来补全   

  26. ;;这是说,首先使用当前的buffer补全,如果找不到,就到别的可见的窗口里寻找,如果还找不到,那么到所有打开的buffer去找,如果还……那么到kill-ring里,到文件名,到简称列表里,到list,…… 当前使用的匹配方式会在 echo 区域显示。   

  27. ;;特别有意思的是 try-expand-line,它可以帮你补全整整一行文字。我很多时后有两行文字大致相同,只有几个字不一样,但是我懒得去拷贝粘贴以下。那么我就输入这行文字的前面几个字。然后多按几下 M-/ 就能得到那一行。  

  28. (global-set-key [(meta ?/)] ‘hippie-expand)   

  29. (setq hippie-expand-try-functions-list   

  30. ‘(try-expand-line   

  31. try-expand-line-all-buffers   

  32. try-expand-list   

  33. try-expand-list-all-buffers   

  34. try-expand-dabbrev   

  35. try-expand-dabbrev-visible   

  36. try-expand-dabbrev-all-buffers   

  37. try-expand-dabbrev-from-kill   

  38. try-complete-file-name   

  39. try-complete-file-name-partially   

  40. try-complete-lisp-symbol   

  41. try-complete-lisp-symbol-partially   

  42. try-expand-whole-kill))   

  43.   

  44. ;;时间戳设置(time-stamp),设定文档上次保存的信息   

  45. ;;只要里在你得文档里有Time-stamp:的设置,就会自动保存时间戳   

  46. ;;启用time-stamp   

  47. (setq time-stamp-active t)   

  48. ;;去掉time-stamp的警告?   

  49. (setq time-stamp-warn-inactive t)   

  50. ;;设置time-stamp的格式,我如下的格式所得的一个例子:<hans 05/18/2004 12:01:12>   

  51. (setq time-stamp-format “%:u %02m/%02d/%04y %02H02M02S”)   

  52. ;;将修改时间戳添加到保存文件的动作里。   

  53. (add-hook ‘write-file-hooks ‘time-stamp)   

  54.   

  55. ;;时间显示设置   

  56. ;;启用时间显示设置,在minibuffer上面的那个杠上(忘了叫什么来着)   

  57. (display-time-mode 1)   

  58. ;;时间使用24小时制   

  59. (setq display-time-24hr-format t)   

  60. ;;时间显示包括日期和具体时间   

  61. (setq display-time-day-and-date t)   

  62. ;;时间栏旁边启用邮件设置   

  63. (setq display-time-use-mail-icon t)   

  64. ;;时间的变化频率,单位多少来着?   

  65. (setq display-time-interval 10)   

  66.   

  67. hvj的讨论和推广emacs贴3:   

  68. 这里继续帖我得hvj-basic-config.el,讲另外一些比较零碎的设置   

  69. 引用:;;启用minibuffer,好像是默认设置吧   

  70. (minibuffer-electric-default-mode 1)   

  71. ;;启用部分补全功能,如输入M-x q r r相当于M-x query-replace-regexp   

  72. (partial-completion-mode 1)   

  73. ;;在minibuffer里启用自动补全函数和变量   

  74. (icomplete-mode 1)   

  75. ;;所有的问题用y/n方式,不用yes/no方式。有点懒,只想输入一个字母   

  76. (fset ‘yes-or-no-p ‘y-or-n-p)   

  77. ;;允许minibuffer自由变化其大小(指宽度)   

  78. (setq resize-mini-windows t)   

  79. ;;当寻找一个同名的文件,自动关联上那个文件?   

  80. (setq uniquify-buffer-name-style ‘forward)   

  81. ;;在emacs读man文档时,使用当前buffer   

  82. (setq Man-notify-method ‘pushy)   

  83. ;;鼠标自动避开指针,如当你输入的时候,指针到了鼠标的位置,鼠标有点挡住视线了   

  84. (mouse-avoidance-mode ‘animate)   

  85. ;;允许自动打开图片,如wiki里面   

  86. (auto-image-file-mode)   

  87. ;;可以操作压缩文档   

  88. (auto-compression-mode 1)   

  89. ;;在minibuffer上面可以显示列号   

  90. (column-number-mode t)   

  91. ;;显示默认的文档的宽度,看起来比较舒服?   

  92. (setq default-fill-column 60)   

  93. ;;指针不要闪,我得眼睛花了   

  94. (blink-cursor-mode -1)   

  95. (transient-mark-mode 1)   

  96. ;;当指针到一个括号时,自动显示所匹配的另一个括号   

  97. (show-paren-mode 1)   

  98. ;;是用滚轴鼠标   

  99. (mouse-wheel-mode t)   

  100. ;;去掉烦人的警告铃声   

  101. (setq visible-bell nil)   

  102. ;;滚动页面时比较舒服,不要整页的滚动   

  103. (setq scroll-step 1   

  104. scroll-margin 3   

  105. scroll-conservatively 10000)   

  106. ;;设定句子结尾,主要是针对中文设置   

  107. (setq sentence-end “\\([?££?£?]\\|??\\|[.?!][]\”‘)}]*\\($\\|[ \t]\\)\\)[ \t\n]*”)   

  108. (setq sentence-end-double-space nil)   

  109. ;;去掉Emacs和gnus启动时的引导界面   

  110. (setq inhibit-startup-message t)   

  111. (setq gnus-inhibit-startup-message t)   

  112. ;;当指针移到另一行,不要新增这一行?d   

  113. (setq next-line-add-newlines nil)   

  114. ;;在文档最后自动插入空白一行,好像某些系统配置文件是需要这样的   

  115. (setq require-final-newline t)   

  116. (setq track-eol t)   

  117. ;;使用C-k删掉指针到改行末的所有东西   

  118. (setq-default kill-whole-line t)   

  119. ;;设定删除保存记录为200,可以方便以后无限恢复   

  120. (setq kill-ring-max 200)   

  121. ;;增大使用查找函数和变量的寻找范围   

  122. (setq apropos-do-all t)   

  123. ;;是用aspell程序作为Emacs的拼写检查成学   

  124. (setq-default ispell-program-name “aspell”)   

  125. ;;使用narrow功能时的一个设置   

  126. (put ‘narrow-to-region ‘disabled nil)   

  127. ;;启动Emacs自动设置为两个窗口(上下各一个)   

  128. (split-window-vertically)   

  129. ;;改变emacs标题栏的标题   

  130. (setq frame-title-format “%b@vj.org”)   

  131. ;;允许emacs和外部其他程序的粘贴   

  132. (setq x-select-enable-clipboard t)   

而,我们知道Emacs更主要的是在于其扩展,以及不断增长的特性。我们可以用些来增加一些mode及功能。

使用之前

如果是windows,我们建议安装cygwin。这样可以渐渐摆脱对鼠标的依赖,当然了主要目的是与cygwin整合。


cygwin,以及能做什么

cygwin是一个在windows平台上运行的unix模拟环境;


Cygwin包括了一套库,该库在Win32系统下实现了POSIX系统调用的API;还有一套GNU开发工具集(比如GCC、GDB),这样可以进行简单的软件开发;还有一些UNIX系统下的常见程序。


2001年,新增了X Window System。另外还有一个名为MinGW的库,可以跟Windows本地的MSVCRT库(Windows API)一起工作。MinGW占用内存、硬盘空间都比较少,能够链接到任意软件,但它对POSIX规范的实现没有Cygwin库完备。


Windows的Dos Scripts功能非常薄弱,命令行工具也非常少;如果您对Linux比较熟悉,那么Cygwin可以帮助您在Windows下面使用强大的Bash,以及使用数量繁多的Linux命令,通过Scripts,可以更加高效的完成系统管理工作


如果您刚进入Linux的世界,使用Cygwin可以让你在Windows下面练习Linux的Bash,以及常用工具。而不需要安装Linux,也不用担心Windows被破坏。

安装cygwin

下载setup.exe


安装Cygwin,您需要下载setup.exe,此程序根据您选择的软件包,再从互联网下载所有组件。


官网:http://cygwin.com


点此下载从官网下载setup.exe

安装方法参见:http://www.cygwin.cn/site/install/


  • 双击setup.exe
  • 按照安装提示“下一步”
  • 选择从“互联网”安装:
  • 选择安装的路径,一般是C:\Cygwin,选择本地临时目录,用于存放下载的软件;选择您连接互联网的方式,一般选“直接连接”就可以了。
  • 选择下载源:(选择163镜像)
  • 根据安装提示,选择需要安装的软件包,完成安装。

开始使用

启动Emacs

直接打emacs, 如果有X-windows就会开视窗.


如果不想用X 的版本,就用 emacs -nw (No windows)起动.

符号说明

C-X 表示按住CTRL键, 然后按X, 再把CTRL, X一起放开.


M-X META META


在没有META键的电脑上, M-X 等于先按 ESC键, 接着按 X键.


Sun上面META键就是菱形的那个键.


有些系统META键就是ALT键.(或者某一边的ALT键)


C-X或 M-X的X没有大小写分别.


Emacs按键命令基本上是一串C-和M-组成的.


超过两个以上的按键命令, Emacs会在屏幕最下面一行显示你按过什么.


这一行叫作mini buffer

结束Emacs

`C-x C-c‘ — 退出Emacs



或者在minibuffer输入’kill-emacs‘,在输入前需要按下M-x


如果当前有需要保存的文件,那么应该是’save-buffers-kill-emacs

开始之前


  • 如果是类Unix系统,请确定装有GCC,CC或者类似的编译器,当然有其他语言的也可以。比如Python
  • Windows如果没有GCC,试着使用cygwin安装。
  • 当以上两个都不想时,试着用python,perl或者其他脚本语言。

开始工作

启动Emacs,用你喜欢或者习惯的方式。Windows可以加emacs加入环境变量,即PATH

Emacs的操作方式


  • 使用鼠标操作,很明显体现不了Emacs的优势
  • 各种C-x M-x相结合,比较难记
  • 使用命令行,例如find-file是等同于C-x C-f,也就是字面如find-file所表示。

因此相比之下,第二种和第三种方式相结合会比较顺手

开始工作

常用的窗口操作,右边是命令按M-x可以输入,等同于快捷键



























     
C-x 0 delete-window 关闭一个窗口
C-x 1 delete-other-windows 关闭其他窗口
C-x 2 split-window-vertically 垂直分割窗口成两部分
C-x 3 split-window-horizontally 水平分割窗口成两部分
C-x o other-window 切换到另一个窗口

so,让我们开始分割成三部分,先垂直再水平,也就是先’C-x 3′ ‘C-x 2’,如图所示:




然后在第一个窗口,’M-x’然后’find-file’,或者’C-x C-f’,结果如图所示:




接着在切换到另一个窗口(’C-x o’,或者’M-x’,然后输入’other-window’),再输入eshell,或者shell,如果是windows会切换到cmd也就是命令提示符,如图。



然后,新建个文件,’find-file’,再输入路径和文件名,比如我的’D:\Desktop\hello.c。


接着’M-x’,输入’C-mode’,也就是开始C模式,有语法加亮等功能。


接着输入:


  1.    #include<stdio.h>    

  2.     int main(){  

  3.     printf(“Hello,world\n”);  

  4. }  
完成后,’M-x’,再输入’save-buffer’,或者’C-x C-s’。


然后切换到eshell或者shell窗口,输入’gcc hello.c -o hello’,如果是windows则是’gcc hello.c -o hello.exe’


再执行它’./hello’,或者windows输入’hello’,即可,最后如图所示:




如果没有gcc,有python,那么就如上图所示的那样。

赞(0) 打赏
转载请注明出处:服务器评测 » Emacs 入门指引
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏