IT技术互动交流平台

emacs快速指南记录下来的笔记

来源:IT165收集  发布日期:2016-04-07 21:17:18

*首先浏览文字的键
下翻页:C-v
下翻页:M-v
将光标所在页移动到屏幕中央:C-l(L)

*基本的光标移动-精准控制光标(方向键)
C-P
C-N
C-F
C-B
P:previous(上)
N:next(下)
F:forward(前)
B:backward(后)
每一行结束都有一个换行符。如果换行超过屏幕的话,屏幕滚动一屏,光标所在行将显示在屏幕中央。
M-F一个单位一个单位向前移动,如果是英文,就是移动一个英语单词,如果是中文,那就是移动到非中文的符号。
M-B以单位向后移动。
M是以语言单位比如词、句、段落进行操作的,而C是不以语言单位进行操作,与基本单位,比如字符、行等等进行操作。
C-A将光标移动到行首,A应该是ahead的缩写
C-E将光标移动到行尾,E指end
M-A将光标移动到句首
M-E将光标移动到句末
M-<回到文档首部
M->去到文档尾部
大小于号应该指代了方向,小于号<表示向前,大于号>表示了向后。
句首如果是中文是指紧接着句号的上一个位置,句末中文指紧接着句号的下一个位置。
//emacs快速指南中对于基本移动的总结:
这里对简单的光标移动命令做一个总结,其中也包括了整词和整句的移动:

    C-f     向右移动一个字符
    C-b     向左移动一个字符

    M-f     向右移动一个词【对中文是移动到下一个标点符号】
    M-b     向左移动一个词【对中文是移动到上一个标点符号】

    C-n     移动到下一行
    C-p     移动到上一行

    C-a     移动到行首
    C-e     移动到行尾

    M-a     移动到句首
    M-e     移动到句尾

emacs命令大多接受数字参数,而且对于大多数命令而言,这些数字参数作用是指定命令的重复次数。方法有两个:一个是C-U 数字 命令 例如:C-U 8 C-F(也可以是字符)。二是使用M-数字,其他一样,但是这种方法并不是所有终端都支持。
虽然大部分命令把数字参数解释为其重复次数,但是也有些命令例外,它们将数
字参数另做它用。比如有些命令(我们目前还没学到)仅仅将前缀参数作为一个
标志――只要给出有一个前缀参数,不管其值为何,它都会改变命令的功能。

而 C-v 和 M-v 则属于另一种类型的例外。当给定一个参数时,它们将滚动你指定的“行数”,而不是“屏数”。举例来说,C-u 8 C-v 将文本向下滚动 8 行。

*C-G终止命令。在命令失去响应,执行过久的命令。
如果你不小心按了一下 ,你也可以用 C-g 来取消它。
【这个说法似乎有问题,因为按照这个按键顺序输入的应该是 C-M-g。
取消 的正确做法是再连按两次 。】

被禁用的命令(DISABLED COMMANDS)

有一些 Emacs 命令被“禁用”了,以避免初学者在不了解其确切功能的情况下误
用而造成麻烦。

如果你用到了一个被禁用的命令,Emacs 会显示一个提示消息,告诉你这个命令
到底是干什么的,询问你是否要继续,并在得到你的肯定之后再执行这命令。

如果你真的想用这条命令,在 Emacs 询问你的时候应该按空格。一般来说,如果
你不想用,就按“n”。

试试 C-x C-l (这是一个被禁用的命令)
然后用 n 来回答询问。

*窗体window

有一系列命令是以 CONTROL-x 开始的,这些命令许多都跟“窗格、文件、缓冲区
【缓冲区(buffer)会在后文详细介绍】”
C-X 1:只保留一个window,关闭其他window

插入与删除(INSERTING AND DELETING)

插入就是直接输入。
删除:backspace键,删除一个字符,跟平时一样。
C-D:删除光标后一个字符,跟delete一样,delete也是删除光标后一个字符。

 ## <DEL>【backspace】       删除光标前的一个字符
    C-d          删除光标后的一个字符

    M-<DEL>      移除光标前的一个词
    M-d          移除光标后的一个词

    C-k          移除从光标到“行尾”间的字符
    M-k          移除从光标到“句尾”间的字符

//删除:delete,移除:kill
可以时候C-U命令进行重复操作。插入,删除都可以。

你也可以用一种通用的办法来移除缓冲区里的任何一部分:首先把光标移动到你
想要移除的区域的一端,然后按 C-(指空格)【注意,C- 往
往被中文用户设定成输入法热键,如果这样,C- 就被系统拦截而无法传递
给 Emacs 了,在这种情况下可以使用C-@。】,然后将光标移动到你准备移除的
文字的另一端。这个时候, Emacs 会高亮光标和你按下 C- 之间的文本。
最后,按下 C-w 。这样就可以把位于这两点之间的所有文字移除了。
注意,“移除(kill)”和“删除(delete)”的不同在于被移除的东西可以被重新
插入(在任何位置),而被删除的就不能使用相同的方法重新插入了(不过可以
通过撤销一个删除命令来做到,后文会提到)。【实际上,移除掉的东西虽然看
起来“消失”了,但实际上被 Emacs 记录了下来,因此还可以找回来;而删除掉
的东西虽然也可能还在内存里,但是已经被 Emacs“抛弃”了,所以就找不回来
了。】重新插入被移除的文字称为“召回(yank)”。一般而言,那些可能消除很
多文字的命令会把消除掉的文字记录下来(它们被设定成了“可召回”),而那些
只消除一个字符或者只消除空白的命令就不会记录被消除的内容(自然你也就无法召回了)。

*撤销
恢复:C-Y(Y:yanking)恢复上一次移除的内容,也就是C-K
M-Y:恢复再前一次,可以多次使用。

*文件
C-X C-F:查找一个文件。输入这个命令时,会出现一个小缓冲,可以直接在小缓冲里输入文件名,就可以访问该文件了。当然可以用C-G取消。取消之后不会得到任何文件。
C-X C-S:保存文件,同样可以修改文件路径。

查找文件的时候,默认路径是系统文件夹,可以删除路径自己输入要保存的路径。输入路径和文件名之后,就可以在窗体中看到该文件,同时在文件目录之下,会有一个在后缀添加了~的备份,例如:打开了A.TXT,文件目录下会同时有A.TXT和A.TXT~文件。如果输入的文件不存在,那么将新建一个文件,但是,不会立即新建文件,知道输入任何一些内容之后,才会在相应目录新建文件,文件的文件名最前,最后都会有#还有一个.#文件名的文件。
第一个A.TXT是用来打开文件的,第二个AS.TXT是用来看备份后缀名的,第三个DF是新建文件产生的。
存盘之后:
没有后缀名是因为没有指定后缀名。
*缓冲区(BUFFER)
C-X C-B:打开缓冲区列表。[B:buffer]
离开buffer:C-X 1 只留下当前buffer
切换文件可用:C-X C-F
切换缓冲区更加聪明的办法是:C-X B 缓冲区名
C-X S:保存多个buffer,emacs会选择所有没有存盘的buffer,然后询问是否保存,y可以保存

每次打开一个文件,emacs就会新建一个缓冲区,把所有的内容保存到buffer, 知道存盘才写入硬盘。

*命令集扩展
C-x 字符扩展。 C-x 之后输入另一个字符或者组合键。
M-x 命令名扩展。M-x 之后输入一个命令名。

C-x C-f 寻找文件。
C-x C-s 保存文件。
C-x C-b 列出缓冲区。
C-x C-c 离开 Emacs。
C-x 1 关掉其它所有窗格,只保留一个。
C-x u 撤销。

用命令名扩展的命令通常并不常用,或只用在部分模式下。比如
replace-string(字符串替换)这个命令,它会把一个字符串替换成另一个。在
输入 M-x 之后,Emacs 会在屏幕底端向你询问并等待你输入命令名。如果你想
输入“replace-string”,其实只需要敲“repl s”就行了,Emacs 会帮你自
动补齐。输入完之后按 提交。
字符串替换命令需要两个参数――被替换的字符串和用来替换它的字符串。每个
参数的输入都以换行符来结束

*自动保存
如果你已经修改了一个文件,但是还没来得及存盘你的计算机就罢工了,那么你
所做的修改就很可能会丢失。为了避免这样的不幸发生,Emacs 会定期将正在编
辑的文件写入一个“自动保存”文件中。自动保存文件的文件名的头尾各有一个
“#”字符,比如你正在编辑的文件叫“hello.c”,那么它的自动保存文件就叫
“#hello.c#”。这个文件会在正常存盘之后被 Emacs 删除。

所以,假如不幸真的发生了,你大可以从容地打开原来的文件(注意不是自动保
存文件)然后输入 M-x recover file 来恢复你的自动保存文件。在
提示确认的时候,输入 yes。

回显区(ECHO AREA)

如果 Emacs 发现你输入多字符命令的节奏很慢,它会在窗格的下方称为“回显区”
的地方给你提示。回显区位于屏幕的最下面一行。

*状态栏
显示当前文件的信息。
从左到右分别是:显示文件是否被修改,文件名,光标在文档中的百分比位置,光标在第几行,括号阔起来的是模式【默认是:Fundamental】
例如:**- TUTORIAL.cn 63% L749 (Fundamental)

-NN%– 显示的是光标在全文中的位置。如果位于文件的开头,那么就显示 –Top– 而不是 –00%–;如
果位于文件的末尾,就显示 –Bot–。如果文件很小,一屏就足以显示全部内容,那么状态栏会显示 –All–。
最开头的星号(*)表示你已经对文字做过改动。刚刚打开的文件肯定没有被改动
过,所以状态栏上显示的不是星号而是短线(-)。
有多种模式,fundamental是主模式,自然语言用text模式等。
切换模式:M-X 模式名
例如:M-x text-mode
C-h m 可以查看当前主模式的文档
辅模式,与主模式无关,提供辅助性功能。
M-x auto-fill-mode:打开自动折行的功能,再次输入将关闭该功能。输入空格才能分行,默认行长为70。可以使用C-X C-F 配合参数进行修改。

*搜索
C-S:向前搜索
C-R:向后搜索
搜素下一个就是重新输入一次命令
DEL【blackspace】:取消上一个搜索位置,如果是最后一个位置,则回到原来光标位置。
return:结束搜索

*多窗格
在一个窗口显示多个窗体,有点类似分屏。
C-X 2:切分为两个窗格,数字也能是3,1.如果是1,那么只是保留光标所在窗格。【教程中在使用C-X之前还用了两个C-1不知为何】
C-M-V:滚动下方窗格
C-X O:切换窗格,将光标移动到非当前窗格。
C-X 1:只保留当前窗格,关闭其他窗格。

每个窗格都可以打开文件,C-X C-F

*多窗口
M-X make-frame:新建一个窗口,新建的窗口将复制光标所在窗格内容,一个就是把当前窗格变为窗口,
M-X delete-frame:关闭当前窗口,如果只有一个窗口,则无法关闭。

*递归编辑
有时候你会进入所谓的“递归编辑”。递归编辑状态由位于状态栏的方括号所指
示,其中包含了用小括号来指明的模式名称。比如说,你有时可能会看到
[(Fundamental)],而不是 (Fundamental)。【比如在用 M-% 进行交互式替换的
时候你又用了 C-s 进行搜索,这时替换模式并没有结束,但你又进入了搜索模式,
这就是所谓的递归编辑。】

离开递归编辑可以用 ESC ESC ESC。这是一个最通用的“离开”命令,你甚至可
以使用它来关掉多余的窗格,或者离开小缓冲。

输入 M-x 进入小缓冲;然后输入 ESC ESC ESC 离开。

你不能用 C-g 退出递归编辑,因为 C-g 的作用是取消“本层递归编辑之内”的
命令和其参数(arguments)。

*帮助
C-H:帮助相关的命令。

*相关术语
command 命令
cursor 光标
scrolling 滚动
numeric argument 数字参数
window 窗格 [1]
insert 插入
delete 删除 [2]
kill 移除 [2]
yank 召回 [2]
undo 撤销
file 文件
buffer 缓冲区
minibuffer 小缓冲
echo area 回显区
mode line 状态栏
search 搜索
incremental search 渐进式搜索 [3]

Tag标签: 笔记   指南  
  • 专题推荐

About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规