学习Emacs系列教程(二):导航
原文http://www.cnblogs.com/robertzml/archive/2009/09/14/1566435.html
  上回开了个头,简单的介绍了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 nn还是数字,也是重复下个命令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后输的东东。
阅读更多
个人分类: 编程工具
想对作者说点什么? 我来说一句

学习GNU Emacs 第二版 中文版 清晰版

2017年04月03日 53.49MB 下载

学习 GNU Emacs (第2版.清晰)

2015年02月11日 54.44MB 下载

学习GNU Emacs.pdf

2013年12月15日 49.21MB 下载

学习GNU Emacs

2008年01月12日 13.02MB 下载

没有更多推荐了,返回首页

不良信息举报

学习Emacs系列教程(二):导航

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭