Emacs第一部分:所有基础知识
一个用来调用特定命令的Emacs组合键被称为一个键绑定,可自定义,Emacs有缺省的绑定
Emacs命令分为2大类,
- Ctrl
- Meta(Alt)
Emacs符号中
Ctrl
写成C-
后面是第二个按键对应的字符,例如Ctrl-X
组合键写成C-X
Meta
按键被表示为M-
Meta键常被帮顶到
Alt
键,通常可以使用Esc
键完成一个Meta
按键序列,与输入Ctrl按键序列不同,按下Esc,然后松开,再按第2个键每一个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-BackSpace
或C-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 协议 ,转载请注明出处!