Emacs教程(二)

上回开了个头,简单的介绍了Emacs的一些基本常识,这回继续说基本常识,怎么移动你的光标。可能有人会说,这上下左右键不是很好用吗,还用你来讲。呶,Emacs的强大在于你能够只使用键盘左边那堆键来完成任何事情(不包括顶上的ESC和Function),这也是Emacs的设计宗旨。
  为了试验这些按键,大家在进入Emacs时选择页面中间的Emacs Tutorial,这里面可以随便乱按不用担心出什么岔子。

一、基本导航
  看下面这张图片:
  

  可以这么记,p-previous,n-next,b-backward,f-forward。这里所说的字符对于E文,就是一个字母,而中文是一个汉字,其实Emacs对中文支持还是很厚道的,后面慢慢可以看出来。不过在这儿我个人感觉这个光标移动没有Vim方便,别人就HJKL,一个键就能动了,这需要两个,Ctrl 有时还觉得按着很别扭,不太和谐呀。
  在按C-n 时,如果越过了页尾,不像一般Windows编辑器是往下滚一行,而是往下滚半夜,当前光标会置于页面中间。C-p 也是一样的。
  另外两个使用较多的是C-v 往下翻页,M-v 往上翻页。呃,还有一个C-l 就是把当前行提到页面中间,感觉Emacs对页面中似乎情有独钟啊。

二、中级导航
  按字符移的上节说了,然后说按单词移动:
  M-f 向前移动一个单词,Emacs理解的中文单词是两个标点符号之间的东西,所以中文就是移到下一个标点符号的位置。往回是M-b ,向后移动一个单词。
  C-a 移动到行首,C-e 移动到行尾。
  M-a 移动到句首,M-e 移动到句尾,在中文中一般就是跑到句号的位置,这里我不得不说一下,现在很多年轻人写文章有一逗到底的习惯,就只在文章最后加个句号,如果用Emacs来看你的文章,一个M-e 啥都不用干了。作为一个有一定文学素养的人,在此我严厉反对这种写文章的作风,不和谐。
  M-} 移动到下一段, M-{ 移动到上一段。
  还有两个跑的更快的导航,M-< 移到文档首,这里要注意是小于符号<,不是逗号, ,所以我们是按Alt + Shift + ,  切记。移到文档尾是M->。
  C-x [ 和 C-x ] ,分别是往上一页和往下一页。这里页是由分页符控制的,在Emacs Tutorial 中是没有分页符的,所有这两个键会跑到文档头和文档尾去。
  例图:

  阴影处是当前光标的位置,其它箭头所指是按相应键后光标的位置。

三。高级导航
  可以这么来看基本导航是普通人用的,中级导航是高手采用的,高级导航是砖家、叫兽用的。
  M-r 移动到页面中间行首位置,holly shit,又是页面中间,真XX阴魂不散。
  M-x goto-char (n),这个比较复杂,先按M-x,然后空格输goto-char回车,另外Emacs有Tab键补全功能,大家可以试试,如果有多个选项会有提示,最后输入一个整数。这个东西会移动到从头数第n个字符的位置,我估计不会有人变态到能记住每个字是第几个字符。
  M-g M-g [n],按两次M-g,不用回车,提示输入一个数字,移动到指定行n,两个M-g,也可以输M-g g 。
  还有一个比较罕见的,C-x C-n, 这个是设置当前列为目标列。这是什么意思呢,本来我们按C-n 和C-p 时,光标会往下或往上移一行,而列的位置就是当前光标列的位置,除非下一行列没那么多(就是字符没那么多),光标会到距当前列最近的列。而我们可以用这个组合键重新设一个目标列,这样在按C-n 和C-p 时,光标会跑到我们设的目标列上。如果你不幸按了,而且又不习惯,可以使用C-u C-x C-n 来取消目标列设置。补充一点,这两个命令都是禁用命令,是Emacs考虑大家多半不会用,而且比较怪的命令,所以通常就禁用了,你不小心调出时会给出提示问你是否需要继续。就像这个样子:

  大家按个空格稍微试下就行了。
  最后还有两个重复命令:
  M-n, n是数字,意思是重复下个命令n次,比如M-3 C-f,就是向前移三个字符。
  C-u n,n还是数字,也是重复下个命令n次。 如果省略n,就是4次。按两次C-u,就是重复16次。

小结:


按键


命令


作用


C-f


forward-char


向前一个字符


C-b


backward-char


向后一个字符


C-p


previous-line


上移一行


C-n


next-line


下移一行


M-f


forward-word

向前一个单词

M-b


backward-word


向后一个单词


C-a


beginning-of-line


移到行首


C-e


end-of-line


移到行尾


M-e


forward-sentence


移到句首


M-a


backward-sentence


移到句尾


M-}


forward-paragraph

下移一段

M-{


backward-paragraph


上移一段


C-v


scroll-up


下移一屏


M-v


scroll-down


上移一屏


C-x ]


forward-page


下移一页


C-x [


backward-page


上移一页


M-<


beginning-of-buffer


移到文档头


M->


end-of-buffer


移到文档尾


M-g g n


goto-line


移到第n行


(none)


goto-char


移到第n个字符


C-l


recenter


将当前位置放到页面中间(Emacs最喜欢的地方)


M-n


digit-argument


重复下个命令n次


C-u n


universal-argument


重复下个命令n次,n默认为4

注:这里命令这列就是按了M-x后输的东东。

时间: 2024-12-19 13:15:38

Emacs教程(二)的相关文章

Emacs教程(一)

http://www.cnblogs.com/robertzml/archive/2009/09/10/1564108.html前言的前言:本人也是初学Emacs,之前对Vim也只接触了一点,所以也谈不上对哪个更喜欢,也分不出哪个更好.写这个教程的目的一是方便自己更好的学习Emacs,二是没事找事.如果有专家路过还望多指点. 前言:大名鼎鼎的Emacs,传说中程序员的终极武器,已经跨越了文本编辑器,IDE的境界,可以替代操作系统GUI的东东.怀着一种膜拜的心情我决定开始学习Emacs,期望有一天

Emacs 笔记二

Emacs 笔记二 Table of Contents 1. 前言 2. emacs基本操作(常用快捷键) 3. emacs模式讲解 4. emacs缓冲区 5. org mode 5.1. 列表 5.2. 快键键 5.3. 内嵌元素(插入代码什么的) 5.4. 表格 1 前言 最近在学着写博客,发现MarkDown真乃神器,于是去找了很多markdown的工具,发现作业部落 最好的那个,而无意间又发现了org-mode火爆到极致 非常被人推崇,其实作业部落 已经是能很完美的满足我的需求了,但是

C#微信公众号开发系列教程二(新手接入指南)

http://www.cnblogs.com/zskbll/p/4093954.html 此系列前面已经更新了两篇博文了,都是微信开发的前期准备工作,现在切入正题,本篇讲解新手接入的步骤与方法,大神可直接跳过,也欢迎大神吐槽. 目录 C#微信公众号开发系列教程一(调试环境部署) C#微信公众号开发系列教程一(调试环境部署续:vs远程调试) C#微信公众号开发系列教程二(新手接入指南) 微信公众平台消息接口的工作原理大概可以这样理解:从用户端到公众号端一个流程是这样的,用户发送消息到微信服务器,微

C语言快速入门教程(二)

C语言快速入门教程(二) C语言的基本语法 本节学习路线图: 引言: C语言,顾名思义就是一门语言,可以类比一下英语; 你要说出一个英语的句子需要:  单词  +  语法!  将单词按照一定的语法拼凑起来就成了一个英语句子了; C语言同样是这样,只不过单词可以理解为一些固定的知识点,而语法可以理解为算法(可以理解为解决问题的方法) 在这一节中我们就对固定知识点中的语言描述与数据存储进行解析! 1.C语言的基本元素 1.1  标识符 什么是标识符? 答:在C语言中,符号常量,变量,数组,函数等都需

DataVeryLite入门教程(二) Entity篇

DataVeryLite 是基于.net 4.0的数据库持久化ORM框架. 目前支持的数据库有Sqlserver,Mysql,Oracle,Db2,PostgreSql,Sqlite和Access. 最好先阅读DataVeryLite入门教程(一) 配置篇,然后再阅读本篇.如果你觉得麻烦也可以跳过. Entity是ORM中的核心对象之一,一个继承Entity的对象对应于数据库中的一个表. Entity提供丰富的API对表中的单条数据进行操作. 比如根据id或其他条件,加载,删除,插入,更新和部分

Spring Cloud 入门教程(二): 配置管理

使用Config Server,您可以在所有环境中管理应用程序的外部属性.客户端和服务器上的概念映射与Spring Environment和PropertySource抽象相同,因此它们与Spring应用程序非常契合,但可以与任何以任何语言运行的应用程序一起使用.随着应用程序通过从开发人员到测试和生产的部署流程,您可以管理这些环境之间的配置,并确定应用程序具有迁移时需要运行的一切.服务器存储后端的默认实现使用git,因此它轻松支持标签版本的配置环境,以及可以访问用于管理内容的各种工具.很容易添加

jQuery 入门教程(二): 基本语法

学习jQuery之前需要你有下面几个方面的基本知识 HTML CSS JavaScript jQuery 的基本语法 $(selector).action() $ 符合定义这是一个jQuery语句 (selector) 用来选择某个HTML元素,其语法和CSS的selector语法一样. action() 定义操作该HTML元素的方法. 比如: $(this).hide() – 隐藏当前元素. $("p").hide() – 隐藏所以 <p> 元素. $(".te

HTML/CSS基础教程 二

表 表是十分有用的,用它存储表状的数据更易于阅读.当你想用行列来显示信息时---你猜到了,<table>标签正是你需要的,有许多和表有关的标签,它们都以<table>开始. 表就是将一组数据用行列的形式排列,我们用<tr>标签创建一个表行(table row),<td>标签表示表数据(table date) <!DOCTYPE html> <html> <head> <title>Table Time</

Quartz教程二:API,Job和Trigger

原文链接 | 译文链接 | 翻译:nkcoder | 校对:方腾飞 本系列教程由quartz-2.2.x官方文档翻译.整理而来,希望给同样对quartz感兴趣的朋友一些参考和帮助,有任何不当或错误之处,欢迎指正:有兴趣研究源码的同学,可以参考我对quartz-core源码的注释(进行中). Quartz API Quartz API核心接口有: Scheduler – 与scheduler交互的主要API: Job – 你通过scheduler执行任务,你的任务类需要实现的接口: JobDeta

Android高手进阶教程(二十八)之---Android ViewPager控件的使用(基于ViewPager的横向相册)!!!

分类: Android高手进阶 Android基础教程 2012-09-14 18:10 29759人阅读 评论(35) 收藏 举报 android相册layoutobjectclassloaderencoding 大家好,相信大家用的ListView控件一定很多的,是竖向滑动的,复用convertView,我们可以加载成千上万的数据,但有时候我们会有 这个需求比如相册,我们想横向滑动,并且数据有好多,这时候ViewPager控件就派上用场了,ViewPager使用时候我们需要导入第三方包 an