Emacs 从入门到精通
不想再说废话了,既然你会阅读这篇文档,说明你多少对Emacs有 些兴趣,或者已 经非常熟悉Emacs的基础操作了,并且希望有所提高。因此我不需要再把"编辑器 之神,还是神的编辑器"之类的恶俗话语放出来,来吸引你的好奇心。下面的内容, 从最基础的快捷键操作开始,一直到让你生活在Emacs中。这中间没有跳跃,你只 需要跟着我做,就可以了。
下面这些主要涉及了文件的基本操作,包括打开,新建,保存,另存为以及退出等比较常用的命令。
C-x C-f | 打开/新建一个文件 |
C-x C-s | 保存文件 |
C-x C-w | 另存为文件 |
C-x C-v | 关闭当前缓冲区文件并打开新文件 |
C-x i | 在当前光标处插入文件 |
C-x b | 新建/切换缓冲区 |
C-x C-b | 显示缓冲区列表 |
C-x k | 关闭当前缓冲区 |
C-x C-c | 关闭emacs |
这里边最方便的就是句首句尾和行首行尾,因为我的是笔记本键盘,上下左右主 要是用方向键,如果要是标准键盘的话,最好常用绑定键。
C-f | 后一个字符 |
C-b | 前一个字符 |
C-p | 上一行 |
C-n | 下一行 |
M-f | 后一个单词 |
M-b | 前一个单词 |
C-a | 行首 |
C-e | 行尾 |
C-v | 向下翻一页 |
M-v | 向上翻一页 |
M-< | 到文件开头 |
M-> | 到文件末尾 |
这里面包括了复制粘贴剪切删除等常用的操作命令。注意,在这里,移除包括了 剪切和删除两个概念,要区分清楚。
M-n/C-u n | 重复执行后一个命令n次 |
C-d | 删除后一个字符 |
M-d | 删除后一个单词 |
Del | 删除前一个字符 |
M-Del | 删除前一个单词 |
C-k | 移除一行 |
C-@ | 设定标志位(主要是为了粘贴剪切以及删除使用) |
C-w | 移除标记区域的内容(剪切) |
M-w | 复制标记区域的内容(复制) |
C-y | 召回(yank)复制/移除的区域/行(粘贴) |
M-y | 召回更早的内容 (在kill缓冲区内循环) |
C-t | 交换两个字符的位置 |
M-t | 交换两个单词的位置 |
C-x C-t | 交换两行的位置 |
M-u | 使从光标位置到单词结尾处的字母变成大写 |
M-l | 与M-u相反 |
M-c | 使从光标位置开始的单词的首字母变为大写 |
C-g | 停止当前运行/输入的命令 |
C-x u/C-_ | 撤销前一个命令(undo) |
C-s | 向后搜索 |
C-r | 向前搜索 |
窗口命令比较常用,尤其是编辑多个文件的时候,你可以打开多个窗口,可以提 高编辑效率。
C-x 2 | 水平分割窗格 |
C-x 3 | 垂直分割窗格 |
C-x o | 切换至其他窗格 |
C-x 0 | 关闭窗格 |
C-x 1 | 关闭除了光标所在窗格外所有窗格 |
C-h m | 查看当前模式 |
C-h c | 显示快捷键绑定的命令 |
C-h k | 显示快捷键绑定的命令和它的作用 |
C-h f | 显示函数的功能 |
C-h b | 显示当前缓冲区所有可用的快捷键 |
C-h t | 打开emacs教程 |
每一次emacs启动的时候,它将加载一个名为~/.emacs的Lisp代码文件,对该文件 进行编辑是一种常用的定制emacs的方式。
下面是一个典型的Lisp语句:
它的意思是在minibuffer上栏显示行列号。其中,括号表示这是一个lisp函数调 用,圆括号内第一个符号setq为emacs配置文件中常用的的函数,它为某个全局变 量赋值。该函数第一个参数为要设置的变量名,第二个数则是该变量的值。
下面讲到的每一行代码,你都可以直接拿到~/.emacs中使用。当你想要了解某一 行代码的作用时,可以把它复制粘贴到~/.emacs中,保存然后重启emacs就可以看 到效果了。
每一条上面都有注释,我就不多说了。
这里所说的高级定制,基本上都属于比较重要的日常应用,比如说主题,w3m浏览 器,Irc,日程管理Org,版本控制Git,代码浏览Cscope。而像那些查看pdf,听 音乐以及煮咖啡的玩意,基本上是华而不实的东西,你要有兴趣,完全可以自己 去做,记住,Emacs提供无限可能。
Emacs的插件一般都是一个以el为后缀名的文件, 把这个文件下载下来后放到一个 目录, 比如~/.emacs.d/, 然后执行下面这两条语句:
这样该插件就安装好了。
其实主题非常重要,因为字体的颜色,背景光标等等都是你天天必须面对的,设 定一个合适的主题,就像一个舒服的狗窝,让你不愿意离开。
下面是我的Emacs主题截图:
这个在Emacs23之后已经自带了,只需要在~/.emacs中加入下面的代码即可使用。
虽然Emacs23自带了Org-mode,但是如果方便地需要使用它,必须做相应的配置才 行。而关于Emacs org是什么,到底有什么用,这里不解释,如果你想了解,可以 在网上搜索,或者进入我的博客找到关于Emacs org 和 GTD 的文章。
好了,在这之前,我还是放一张我打开Emacs的截图
正常生成的html白白黑黑的,没有第三种颜色,对一般人来说比较枯燥。如果你 需要插入lisp/shell代码,五颜六色的比较赏心悦目,当然我不太喜欢它生成的 html,也没有使用。
- 下载htmlize.el
这个很简单,输入htmlize.el,直接就会找到,很简单。 - 添加配置
;; 添加网页着色 (require 'htmlize)
日程表这个东西就是需要不时的看一下,不然单单把它记录起来很容易遗忘,所 以我就把它放在启动的时候。每天,开机,打开Emacs,查看今天的日程表,然后 做相应的工作,多好~
如果你不知道org或者GTD为何物,可能有些云里雾里的。转接的
目的,就是方便 在文件内或者文件之间,互换某些内容。比如,我在inbox里完成了某个 TODO ,然后将其标志成 DONE
,接着需要将这部分内容放到finished里面。如果按 照正常的流程,肯定是先剪切然后复制。由于每天的可能标记完成的任务比较多,
如果都剪切复制,这样的效率太低了,转接就是专门为了提高这个而来的。
首先在你的系统里查询是否有下列文件包。
cvs autoconf libgc-dev libncurses5-dev
查询的方法很简单,例如在终端输入:
它就会自动查看是否已经安装cvs,如果没有,你需要使用下面的指令安装:
上面的几个都可以使用这种方法来确定是否有该安装包。
- APT安装
如果是ubuntu的话,可以先试试apt sudo apt-get install w3m如果可以的话,就不需要使用源代码安装了
- 源代码安装
- 首先:回到主目录 cd
其次:使用cvs下载源码包,输入下面的命令:
- cvs -d:pserver:anonymous@w3m.cvs.sourceforge.net:/cvsroot/w3m login
它会要求你输入密码,直接回车即可。然后在输入下面的命令:
- cvs -d:pserver:anonymous@w3m.cvs.sourceforge.net:/cvsroot/w3m checkout w3m
这一步会下载w3m安装包,可能会浪费点时间,别着急。
然后:安装w3m
- cd w3m ./configure sudo make sudo make install
这几步都是常见的安装命令,无错误之后就表示w3m已经安装完毕。
最后:验证w3m是否正确安装。
在终端输入
- w3m http://www.google.com
如果出现谷歌的搜索界面就表示成功了,这个时候可能中文显示是乱码,别着急, 后面我会解决这个问题。
这个貌似只能用源代码安装了~
首先:仍旧是回到主目录:
其次,使用cvs下载安装包(这一步和w3m安装差不多)
要你输入密码,直接回车。接着输入下面的命令:
这一步需要下载安装包,需要一段时间,当下载完毕的时候,进入emacs-w3m:
然后:安装emacs-w3m
这些步骤下来不出现问题就表明emacs-w3m安装成功。
这是我的~/.emacs中关于Emacs-w3m部分。
由于w3m-el和emacs23并不能充分匹配,有的时候会出现中文乱码问题。这个时候 你需要卸载w3m-el包,同时安装w3m-el-snapshot包。命令如下:
在Emacs上使用git的选择比较多,有Emacs VC git.el git-emacs magit等等,我 使用的是git-emacs。我已经默认你安装了git。
同样,我还是先放上一张git-emacs的截图:
其实https那个是git-emacs在github上的托管地址,有兴趣可以进去看一看。
- 下载cscope
- 这是cscope的下载地址: http://sourceforge.net/projects/cscope/files/
这是cscope的主页: http://cscope.sourceforge.net/
仍然是老三步:
Cscope 的发行包里面有个 xcscope.el 能很好地用于XEmacs 。它处于源代 码包的 contrib/xcscope 目录下,请将xcospe放入.emcs.d/中。
如果需要使用cscope,请将cscope-indexer放入该目录,同时执行M+X
cscope-index-files,即可在该目录下生成索引文件。同时将cscope-indexer放
入/usr/bin中,设置为可执行,在该目录下执行 sudo cscope-indexer -r,它会
生成cscope.files和cscope.out两个文件或目录。
Emacs 从入门到精通的更多相关文章
- Spring Boot从入门到精通(一)搭建第一个Spring Boot程序
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.通过 ...
- <程序员从入门到精通> -- How
定位 自己才是职业生涯的管理者,想清楚自己的发展路径: 远期的理想是什么?近期的规划是什么?今日的任务和功课又是什么? 今日之任务或功课哪些有助于近期之规划的实现,而近期之规划是否有利于远期之理想? ...
- 【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目 目录索引
索引 [无私分享:从入门到精通ASP.NET MVC]从0开始,一起搭框架.做项目(1)搭建MVC环境 注册区域 [无私分享:从入门到精通ASP.NET MVC]从0开始,一起搭框架.做项目(2)创建 ...
- ASP.NET MVC4入门到精通系列目录汇总
序言 最近公司在招.NET程序员,我发现好多来公司面试的.NET程序员居然都没有 ASP.NET MVC项目经验,其中包括一些工作4.5年了,甚至8年10年的,许多人给我的感觉是:工作了4.5年,We ...
- Web jquery表格组件 JQGrid 的使用 - 从入门到精通 开篇及索引
因为内容比较多,所以每篇讲解一些内容,最后会放出全部代码,可以参考.操作中总会遇到各式各样的问题,个人对部分问题的研究在最后一篇 问题研究 里.欢迎大家探讨学习. 代码都经过个人测试,但仍可能有各种未 ...
- 1、ASP.NET MVC入门到精通——新语法
本系列目录:ASP.NET MVC4入门到精通系列目录汇总 在学习ASP.NET MVC之前,有必要先了解一下C#3.0所带来的新的语法特性,这一点尤为重要,因为在MVC项目中我们利用C#3.0的新特 ...
- 5、ASP.NET MVC入门到精通——NHibernate代码映射
本系列目录:ASP.NET MVC4入门到精通系列目录汇总 上一篇NHibernate学习笔记—使用 NHibernate构建一个ASP.NET MVC应用程序 使用的是xml进行orm映射,那么这一 ...
- 6、ASP.NET MVC入门到精通——ASP.Net的两种开发方式
本系列目录:ASP.NET MVC4入门到精通系列目录汇总 目前,ASP.NET中两种主流的开发方式是:ASP.NET Webform和ASP.NET MVC.从下图可以看到ASP.NET WebFo ...
- 7、ASP.NET MVC入门到精通——第一个ASP.NET MVC程序
本系列目录:ASP.NET MVC4入门到精通系列目录汇总 开发流程 新建Controller 创建Action 根据Action创建View 在Action获取数据并生产ActionResult传递 ...
随机推荐
- com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown database 'db_item'
一直很奇怪,为什么报错,进入mysql命令行,show databases:发现多谢了一个空格,如上图.
- BZOJ4590 自动刷题机
Description 曾经发明了信号增幅仪的发明家SHTSC又公开了他的新发明:自动刷题机--一种可以自动AC题目的神秘装置.自动 刷题机刷题的方式非常简单:首先会瞬间得出题目的正确做法,然后开始写 ...
- Windows Server 2008系统如何取消登录时要按Ctrl+Alt+Delete组合键
1.点桌面任务栏的“开始-->运行”在弹出的窗口中输入gpedit.msc . 2.输入gpedit.msc后,点击确定即打开了组策略编辑器.在组策略编辑器的左框内依次序展开(点前面的“+”号) ...
- poj 3734 矩阵快速幂+YY
题目原意:N个方块排成一列,每个方块可涂成红.蓝.绿.黄.问红方块和绿方块都是偶数的方案的个数. sol:找规律列递推式+矩阵快速幂 设已经染完了i个方块将要染第i+1个方块. a[i]=1-i方块中 ...
- android中Handle类的用法
android中Handle类的用法 当我们在处理下载或是其他需要长时间执行的任务时,如果直接把处理函数放Activity的OnCreate或是OnStart中,会导致执行过程中整个Activity无 ...
- POJ 1470 Closest Common Ancestors
传送门 Closest Common Ancestors Time Limit: 2000MS Memory Limit: 10000K Total Submissions: 17306 Ac ...
- 2层Xml读取类
配置文件 <?xml> <root> <parent name="C"> <child name="C1">Sp ...
- 随时修改添加,thinkphp小知识
__SELF__代表自身路径, 谁访问它代表是谁, 区别在于有没有传值.传值的话self会带那个值 __ACTION__ 找操作方法所在的位置,区别在于有没有传值.传值的话action不会带那个值 _ ...
- MySQL中varchar类型在5.0.3后的变化
1.mysql varchar类型变化:mysql 5.0.3 之前: 0--255字节 varchar(20)中的20表示字节数,如果存放urf8编码的话只能放6个汉字. MySQL 5.0.3 之 ...
- zabbix 汉化
zabbix2.x的版本自带汉化,3.x的版本也可以通过修改配置文件强制使用自带的汉化,但是不管哪种,翻译的精准度令人费解:偶然发现一个专门翻译zabbix的网站https://www.zabbix. ...