移动
C-v #翻页
M-v #回翻页
C-p:
C-n:
C-b:
C-f:
C-l:
M-f #以单词为单位移动
M-b #
C-a #移至行头
C-e #移至行尾
M-a #移至句头
M-e #移至句尾
C-< #移至全文头
C-> #移至全文尾
C-d #删除光标后的一个字符
M-d #移除光标后的一个词 //移除和删除是不一样的
C-k #移除光标到行尾间的字符
M-k #移除光标到句尾间的字符
C-@ #标记
C-w #移除
M-w #复制
C-k #移除光标之后本行
C-y #召回最后一次,移除的文字,在光标所在的地方
M-y #召回前几次移除的文字(必须紧接上一条命令)
C-x u #命令撤销undo(C-_)
C-u:置重复命令次数
C-g:对你的命令失去响应的时候,安全终止,终止输入一半的指令
C-x 1:关掉其余窗格(以C-x为开头的,窗格,文件缓冲区有关)
《文件》
C-x C-f:寻找文件,编辑之后源文件重命名备份~
C-x C-s:存盘
可以查找一个不存在的文件:创建文件的方法
缓冲区
C-x C-b #列出缓冲区
C-x b #加上缓冲区名字,进入对应的缓冲区
C-x s #保存多个缓冲区,找出已经修改但未存盘的,逐个询问
扩展命令
M-x + replace-string #光标之后全文范围替换字符串
状态栏:
最开头*:表示已经对文字做过改动
最开头-:未改动
(Fundamental):表示主模式
C-h m:查看当前主模式的文档
M-x text mode:切换到Text模式(编辑自然语言文本)
M-x auto fill mode:自动折行辅模式
搜索
C-s #向前搜索
C-r #向后搜索
多窗口
C-u 0 C-l #
C-x 2 #将屏幕划分成2个窗格
C-M-v #滚动另外窗格
C-x o #将光标转移到下方的窗格
C-x 4 C-f #在新的窗格里打开文件
(递归编辑)
[(Fundamental)]:比如说在M-%进行交互式替换的时候又使用了C-s进行搜索
,这时替换模式并没有结束,但又进入了搜索模式,这就是所谓的递归编辑
离开递归编辑Esc Esc Esc
获得更多帮助
C-h ? #Emacs告诉你他提供了那些帮助
C-h c + 组合键 #给出这个命令的简要说明
C-h k + 组合键 #给出更具体的信息
C-h f #解释一个函数
C-h v #显示Emacs变量的文档。“Emacs变量”用来定制Emacs行为
C-h i #阅读联机手册,Emacs Info将会成为你主要的参考文档
C-x C-c:退出Emacs
Emacs会自动保存正在编辑的文件,文件名头尾#,正常保存之后被Emacs自动删除
M-x recover file:假如不幸发生了,打开原文件,输入该命令
Lisp相关
C-c C-q:调用slime-close-parents-at-point,插入必要量的括号
C-c C-c:启动slime-compile-defun命令,从新编译
C-c C-z:切换到repl
, :在repl输入,输入命令
-quit,退出Lisp,并将关闭所有的Slime创建的缓冲区,包括repl缓冲区
M-x slime :重启Slime
q :在进入调试器的时候,输入q退出调试器
load :加载整个文件,本质上等于在repl一个一个的输入文件中的定义
complile-file:在repl中编译文件
支持不适用repl加载和编译文件
C-c C-l:slime-load-file加载文件,在一个源代码缓冲区
C-c C-k:编译并加载那个当前缓冲区所关联的文件
C-c M-k:编译但是不加载当前缓冲区的源文件
C-c C-z:回到repl缓冲区
C-c M-q:函数内部键入,从新缩进整个函数体
C-M-q :开括号上键入,重新缩进整个表达式
M-n :移动到下一个编译消息处,并显示消息
M-p :移动到上一个编译消息处。。。
M-tab :补全
M-. :跳至光标符号的定义处
M-, :返回
C-x 4 . :跳至另一个窗口编辑其定义
C-x 5 . :跳至另一个框架编辑其定义
C-c C-d d :描述当前光标处的符号
C-c C-d f :描述当前光标处的函数
C-c C-d h :在Hyperspec中查找当前光标处的符号
C-c C-d ~ :在。。。中查找一个format格式控制符
C-c C-d # :在。。。中查找一个读取宏
C-c C-w c :显示该函数的调用者
C-c C-w r :显示对全局变量的引用
C-c C-w b :显示对全局变量的绑定
C-c C-w s :显示对全局变量的赋值
C-c C-w m :显示某个宏展开之后的结果
C-c C-w C-a :显示一个类所有已知的方法
C-c < :列出一个函数的所有调用者
C-c > :列出一个函数所有调用的函数
C-c C-m :将光标处的表达式宏展开一次
C-c M-m :将光标处的表达式完全宏展开
C-c M-d :分解光标处的函数定义
C-c C-t :触发对光标处函数的跟踪
M-x slime-untrace-all :停止跟踪所有函数。
C-c C-b :中断Lisp进程
M-x slime-restart-inferior-lisp :重启inferior-lisp进程
M-x slime-cd :设置Lisp进程所在的当前目录
M-x slime-pwd :打印出lisp进程的当前目录
检查命令
C-c l :查看输入在一个迷你缓冲区中的表达式的值
ret :如果光标处是一个值,那么递归的调用查看器看它。
d :描述光标处的值
v :在冗余模式和简洁模式之间切换
l :回到前一个对象
n :l的你操作
g :在此查看
q :关闭查看缓冲区
. :查看光标处的对象代码
tab :跳至下一个可查看对象
分析命令:
M-x slime-toggle-profile-fdefinition :触发对一个函数的分析
M-x slime-profile-package :分析一个包里的函数
M-x slime-profile-by-substring :分析所有名字含有某个字串的函数
M-x slime-unprofile-all :停止所有分析
M-x slime-profile-report :报告分析数据
M-x slime-profile-reset :重置分析数据
M-x slime-profiled-functions :显示当前所有正在分析的函数
C-c M-o :清空当前缓冲区,只留一个提示符
C-c C-o :从缓冲区里清空之前表达式的输出和结果
C-up :上一条命令
C-c C-v TAB :inspect