Emacs第一部分:所有基础知识

  1. 一个用来调用特定命令的Emacs组合键被称为一个键绑定,可自定义,Emacs有缺省的绑定

  2. Emacs命令分为2大类,

    1. Ctrl
    2. Meta(Alt)
  3. Emacs符号中Ctrl写成C-后面是第二个按键对应的字符,例如Ctrl-X组合键写成C-X

  4. Meta按键被表示为M-

    Meta键常被帮顶到Alt键,通常可以使用Esc键完成一个Meta按键序列,与输入Ctrl按键序列不同,按下Esc,然后松开,再按第2个键

  5. 每一个Emacs命令都是一个函数,由Emacs Lisp定义,并有一个函数名.

    例如: 用上下方向键将光标向上移动一行也是一个函数previous-line,使用M-x命令,然后输入函数名,可运行任意一个函数.

    M-x previous-line


缓冲区和文件

普通方式启动Emacs,默认是scratch(乱,挠)缓冲区,如果是Emacs自动创建的特殊缓冲区,名称两边有星号

缓冲区中有未保存到磁盘的文本时,模式行左侧出现两个星号,

创建新文件的方法

当前的buffer没有和特定文件相关联时,Emacs将提示你指定用来保存缓冲区的文件的名字,已关联则直接写入

C-x C-s运行save-buffer命令,将缓冲区内容保存到某个文件

如果Emacs中没有打开其他的buffer,scratch缓冲区会一直存在,当它是唯一buffer时,scratch是无法被关闭的

利用文件名启动Emacs

Emacs启动某个特定的文件的内容放进一个新的缓冲区中以便编辑,提供多个文件则每个文件都在属于自己的缓冲区中打开.


打开一个文件

C-x C-f:find-file()命令,用文件的内容打开一个缓冲区

访问缓冲区

C-x b从当前缓冲区切换到指定的缓冲区中,直接键入Enter(没有指定缓冲区的名称)则会切换到上一次访问的缓冲区,缺省值是scratch缓冲区

新建缓冲区

利用切换缓冲区C-x b,键入新缓冲区命名就可以,

C-x C-s保存缓冲区内容到磁盘中,指定的文件名不需要和缓冲区名称相同,Emacs会自动改变buffer的名称和使与新文件相符

kill buffer

C-x k命令杀死某个缓冲区,键入Enter则是当前缓冲区(缺省),

将缓冲区保存到磁盘

C-x C-s 命令,

Emacs备份文件:当在Emacs中编辑一个已经存在的文件时,然后将编辑内容保存到文件时,Emacs会将编辑前的内容写到新文件中进行备份,此新文件的名称与原来的文件相同,只是多了一个波浪符号


在Emacs中编辑文本

在插入点插入文本

插入点:

表示字符的插入位置,位于光标所在字符和前一个字符之间

C-p (previous上): 光标移动到上一行

C-n(next 下): 光标移动到下一行

C-f(front 前): 光标移动到下一个字符

C-n(next 后): 光标移动到上一个字符

PageDown替代:C-V

PageUp 替代:M-v

C-a :光标转移到行的开始处

C-e:光标转移到行的结尾

M-a:转移到当前句子的开头

M-e:转移到当前句子的结尾

M-f:光标向后移动一个单词 (注意C是移动一个字符)

M-b:光标向前移动一个单词

改写模式

[Ins]键

删除,撤销和重复

1. 删除

Del:删除当前光标的字符

BackSpace:删除插入点左边的字符

C-d = Del:删除当前光标的字符

M-d:删除光标后直到单词末尾

M-BackSpaceC-BackSpace或者M-Del都可以从插入点一直删除到单词的开头

2.撤销和重复

运行undo()函数,撤销不想执行的操作,此函数绑定到C-_,也就是Ctrl+Shift+-

如果对undo()操作感到后悔,键入C-g,取消所有的撤销操作,再次键入C-_执行redo()操作

C-u 2 e表示写入2个e字符,在没有数字参数下,假定数字为4,C-u本身作为参数则自乘4,

例如:C-u C-u C-u a,则是64个a

例:快速移动向后光标:C-u 100 C-f

标记,移除

标记一个区域

C-space在当前插入点处设置一个标记,插入点和设置标记之间的部分被称为区域

删除和恢复文本

C-w,删除定义的区域,删除的文本保存在Emacs的kill ring中, (作用类似剪切)

C-y把它们恢复到插入点,多个删除命令连续进行删除,会叠加在一起,只返回一个移除内容

C-k删除从插入点到行末的所有文本

复制文本

M-w:和C-w的剪切对比记忆,M-w是复制区域内容到kill ring


常用快捷键(函数总结)

C-x 文件和缓冲区命令

C-x 文件和缓冲区命令
C-x C-c 将所有未保存的缓冲区保存到磁盘,并退出Emacs:save-buffers-kill-emacs()
C-x C-s 将当前buffer写入磁盘文件:save-buffer()
* C-x s 将所有未保存的缓冲区保存到磁盘:save-some-buffers()
C-x C-f 打开一个文件:find-file()
* C-x b 从当前缓冲区切换到指定的另一个缓冲区
C-x C-b 列出所有缓冲区:list-buffers()
* C-x k 杀死一个缓冲区,缺省为当前:kill-buffer()
C-x C-q 切换当前缓冲区的可读状态:vc-toggle-read-only()
* C-x i 在光标处插入某个文件的内容:insert-file()
C-g 终止命令

M-x 进入命令行

C- 键盘移动和导航

C-p 光标移动到上一行:previous-line()
C-n 光标移动到下一行:next-line()
C-f 光标移动到下一个字符:forward-char()
C-b 光标移动到上一个字符:back-char()
C-a 光标移动到行首:beginning-of-line()
C-e 光标移动到行尾:end-of-line()
M-f 光标移动到下一个单词:forward-word()
M-b 光标移动到上一个单词:backward-word()
C-v [PgDn] 将文本向上滚屏:scroll-up()
M-v [PgUp] 将文本向下滚屏:scroll-down()
[Home] 将光标移动到行首(可能是buffer开头):beginning-of-buffer()
[End] 将光标移动到行末(可能是buffer末尾):end-of-buffer()
M-a 将光标移动到句子的开始处:beginning-of-sentence()
M-e 将光标移动到句子的结尾处:end-of-sentence()

C-Emacs编辑命令

Ins 切换改写模式:overwrite-mode()
BackSpace 删除插入点前的字符:delete-backward-char()
C-d 删除插入点处的字符:delete-char()
M-d 从插入点开始删除直到末尾:kill-word()
M-BackSpace 从插入点开始删除直到单词开始:backward-kill-word()
C-_ 撤销操作:undo()
C-q 在插入点插入按键本身代表的字符:quoted-insert()
C-u 重复指令:universal-argument()

标记和删除文本的Emacs函数

C-space 在插入点设置标记:set-mark-command()
C-k 删除从插入点到行末的所有文本:kill-line()
C-w 删除区域: kill-region() 类似剪切
M-w 将区域保存在kill ring中,但是不删除:kill-ring-save() 类似复制
C-y 恢复来自kill ring的文本: yank()

Emacs的鼠标操作

B1表示鼠标左键,B2表示鼠标右键,B3表示鼠标中键

B1 设置插入点位置,按住不懂拖动鼠标设置区域
B1-B1 标记一个单词
B1-B1-B1 标记一行
B2 将区域插入kill ring中,并把光标移动到插入内容的末尾
B3 将kill ring的内容插入到光标处

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!