Emacs的学习

974 阅读11分钟

emacs学习

目录

[TOC]

简介

Emacs其实是个Lisp的解释器,因此可以用Lisp灵活地扩展。渐渐地人们不再限于用Emacs写程序,写文档,面且在Emacs里管理文件系统、运行终端、收邮件、上网、听音乐等。

正是因为Emacs具有无限的可扩展性,人们才分不清Emace到底是不是一个编辑器。但就是有人喜欢这种All-in-One的哲学,喜欢在Emacs中完成每件事。

  1. WebKit浏览器

能在Eacs中边写代码,边通过浏览器查阅各种资料。Dired 文件管理器,是具有键盘风格的文件管理功能,Dired有内置的标记、搜索、文本编辑模式等强大功能。

  1. 0rg任务时间管理工具

可以基于文本式对项目进行管理和时间追踪,虽然是纯文本,但是能轻松嵌人多媒体,外部链接,电子表格等强大工具。

  1. 聊天通讯软件

它强大到拥有 IRC 聊天功能,能自动回复,自动翻译,其至是语音读出朋友的消息,通过简单的扩展还能轻松支持XMPP协议和其他软件聊天(比如gtalk)。将新闻阅读器,RSS,Atom格式新闻尽收眼底,不用为了看新闻来回切换窗口。

4.终端模拟器

再也不用在缩写代码的时候切换到外部终端中看输出结果,甚至可以在终端模拟器中嵌入ⅵ,或者在终端中再嵌入Emacs,然后在Emace中打开终端再嵌Emacs。

5.Gnus

拥有统一的阅读邮件和邮件列表的工具Gnus,Gnus基于线索式的邮件管理随时保持清新的上下文来回复好友邮件。

6.数学计算器

Emacs中从基本的计算器到高级的数学公式演算应有尽有,甚至能实时输出3D 演算结果

7.翻译软件

所有Emace可以访问到的单词和语句,都可以快速地被翻译成用户的母语。通过lestival或者其他发音引擎,语音朗读可以自由地朗读Emacs可以看到的任何数据,用户可以边写程序边听IRC聊天

windows安装

  1. 下载 到这个网址可以下载到Emacs的windows版本:ftp.gnu.org/pub/gnu/ema… 只需要一个压缩文档,如emacs-23.2-bin-i386.zip 安装 在D盘根目录下新建一个文件夹,取名Emacs23.2(也可以是其他路径,随个人喜好而定),将emacs-23.2-bin- i386.zip里的文件解压到这个目录下,这样在d:\Emacs23.2\下就有bin, tec, info, leim, lisp, site-lisp等目录。

  2. 双击bin文件夹里的addpm.exe进行安装,安装后将在开始菜单生成Gnu Emacs\Emacs链接,点击这个链接便可启动Emacs。也可以双击bin文件夹里的runemacs.exe启动。注意到bin目录里还有个文件 是emacs.exe,双击它也可以启动,但是会出现一个控制台窗口。

  3. 修改注册表 打开注册表,找到HKEY_LOCAL_MACHINE\SOFTWARE\GNU\Emacs(如果没有则手动添加项), 在此项下添加字符串值,名称为HOME,值为D:\Emacs23.2。这样做的目的是让D:\Emacs23.2成为Emacs的home路径(传说中 的home path,以后你将会经常看到“home目录”、“home directory”等等)。

  4. 创建.emacs.d目录和.emacs文件 相信.emacs.d目录和.emacs文件是困扰大家很久的问题了,其实有个简单的办法 可以解决此问题。启动emacs(注:win7系统需要右键“以管理员身份运行”),用鼠标点击Options菜单,随便点击一两个选项,比如点击一下Active Region Highlighting,然后点击Save Options。先不要担心你会破坏了什么东西,这样做的目的是让emacs自动创建.emacs.d目录以及.emacs文件!观察你的Emacs窗口 最后一行,是否显示“Wrote D:/Emacs23.2/.emacs”?如果是的话就对了,当你选择Save Options的时候,Emacs会在home路径下产生.emacs文件,并把配置信息写进这个文件。D:\Emacs23.2\目录下将会产生这两个文件。(注:windows环境可将".emacs"改为"_emacs")

    我的位置是在C:\Users\Administrator\AppData\Roaming这个文件夹下面,是.emacs文件

linux下安装emacs

 2039  2020-07-28 14:42:49 cd root
 2040  2020-07-28 14:42:51 ls
 2041  2020-07-28 14:42:57 mkdir emacs
 2042  2020-07-28 14:43:01 cd emacs
     ## 下载emacs包
 2043  2020-07-28 14:43:10 wget http://ftp.gnu.org/gnu/emacs/emacs-26.3.tar.xz
 2044  2020-07-28 15:48:32 ls
 2045  2020-07-28 15:49:14 xz -d emacs-26.3.tar.xz
 2046  2020-07-28 15:49:21 ls
 2047  2020-07-28 15:49:27 tar xf emacs-26.3.tar.xz
 2048  2020-07-28 15:49:29 tar xf emacs-26.3.tar
 2049  2020-07-28 15:49:36 cd emacs-26.3.tar.xz
 2050  2020-07-28 15:49:42 cd emacs-26.3
 2051  2020-07-28 15:49:44 ls
 2052  2020-07-28 15:50:40 sudo ./configure -prefix=/usr/local -with-x-toolkit=gtk
     ## 安装显示缺少 gnutlsz* 组件
 2053  2020-07-28 15:51:15 yum list gnutls*
 2054  2020-07-28 15:51:28 yum install gnutls
 2055  2020-07-28 15:52:08 sudo ./configure -prefix=/usr/local -with-x-toolkit=gtk
 2056  2020-07-28 15:52:43 sudo ./configure -prefix=/usr/local -with-x-toolkit=gtk --with-gnutls=no
 2057  2020-07-28 15:53:47 make$make install
     ## 进入emacs的介绍
 2058  2020-07-28 15:57:16 src/emacs -q 
     ## 查看版本信息
     emacs --version

emacs的使用

​ 因为 Control 键在 Emacs 中极为常用,所以为了更方便地使用 Emacs 的键位修改,需要 对其做出修改。建议将大写锁定键(Caps Lock)替换为 Control 键。这里是一个可以参考 的把大写锁定键替换为 Control 键的教程:移动 Control 键 (Moving The Ctrl Key)。如 果这个的教程不适用于你的操作系统,请自行搜索其它的修改方式。

常见符号所代表的意义如下

符号按键
CCtrl
RETEnter
MALT(或者说是ESC)

光标的移动是编辑器中最常用的操作所以必须熟知。

光标移动

  • C-f 为前移一个字符, f 代表 forward.M-F往前挪动一个单词

  • C-b 为后移一个字符, b 代表 backward。

  • C-p 为上移至前一行, p 代表 previous。

  • C-n 为上移至下一行, n 代表 next。

  • C-a 为移至行首, a 代表 ahead。

  • C-e 为移至行尾, e 代表 end。

  • C-v查看下一屏,M-v查看上一屏幕

  • C-s是向前搜索C-r是向后搜索,按return可以结束搜索, 搜索接下去的字符,通过C-g终止搜索

  • C-l是光标强制到页面的中间位置

  • M-<(meta小于号),可以把光标移动到文字的最前方M->,可以把光标移动到文字的最后方

  • C-u 8 C-f向前移动8个字符,C-u 可以和任何搭配,添加数字指令,但是C-v是意外,你给它添加数字指令,他不是切换屏数,而是切换行数

    删除

  • <DEL> 删除光标前的一个字符

  • C-d 删除光标后的一个字符

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

  • M-d 移除光标后的一个词

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

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

    撤销

  • C-/会消除一个命令

  • C-x u 是撤销之前动作的意思

    文件搜索

  • c-x c-f查看目前的HOME可在EMACScxcf,输入~表示到默认HOME可在EMACS下c-x c-f,输入~表示到默认HOME目录,即可看到.emacs文件

  • C-x C-s 为保存当前缓冲区(Buffer), s 代表 save

常用的文件操作快捷键组合也必须熟记。

C-x 是 Emacs 的快捷键中常用的前缀命令。这些前缀命令常常代表了一系列有关联的指 令,十分重要,请特别牢记。其它常见的还有 C-c, C-h 。打断组合键为 C-g ,它 用于终端取消之前的指令。快捷键就是用预先绑定好的方式告诉 Emacs 去执行指定的命令。

窗口

  • C-x 0:关闭当前窗口
  • C-x 1:关闭当前窗口以为的其他窗口
  • C-x 2:水平分割窗口
  • C-x 3:垂直分割窗口
  • C-x 4 0:关闭当前窗口和缓冲
  • C-x 4 b:在另一窗口打开缓冲(如果当前只有一个窗口将分割一个新窗口)
  • C-x 4 f:在另一窗口打开文件(…同上)
  • C-x o:在多个窗口中循环切换。
  • C-x b:选择缓冲区。命令输入后再输入缓冲区名称,可以用tab补全
  • C-x C-b列出缓冲区,C-x b “缓冲区名字”切换缓冲区

其他功能键

C-x C-f打开或者新建
C-x C-s保存当前文档,类似word中c-s
C-x C-c关闭emacs
C-c C-t打开TODO模式
C-c C-e h h/o导出html文件。我一般最后一个用o,可以直接打开生成的html
C-x u神器撤销,就是word里的c-z
C-w剪切
C-y粘贴
M-w复制,貌似windows下用不了,好像和QQ什么东西冲突了,所以用剪切代替了
M-y切换粘贴。emacs下你每次复制的东西都在,用这个可以粘贴之前复制的东西
C-@mark当前位置。比如选中一段话,我们一般用鼠标选中,用这个,在你要选的文字前mark一下,光标移到结尾。这段话被选中了。
C-x b切换buffer,类似windows下的M-TAB
C-x C-blist当前所有的buffer
TAB展开或者收齐当前标题

内置功能

Emacs 功能强大,但是部分功能默认情况下并未开启。下面就有几个例子,

编辑器内显示行号可使用 M-x linum-mode 来开启。

获取帮助

Emacs 是一个富文档编辑器(Self document, extensible editor)而下面的三种方法在学 习 Emacs 的过程中也非常重要。他们分别是,

  • C-h k 寻找快捷键的帮助信息
  • C-h v 寻找变量的帮助信息
  • C-h f 寻找函数的帮助信息

学习基础Elisp

;; 2 + 2
(+ 2 2)

;; 2 + 3 * 4
(+ 2 (* 3 4))

;; 定义变量
(setq name "username")
(message name) ; -> "username"

;; 定义函数
(defun func ()
  (message "Hello, %s" name))

;; 执行函数
(func) ; -> Hello, username

;; 设置快捷键
(global-set-key (kbd "<f1>") 'func)

;; 使函数可直接被调用可添加 (interactive)
(defun func ()
  (interactive)
  (message "Hello, %s" name))

执行语句

- 在某条语句后面按C-x C-e (eval-last-sexp)可以执行那条语句
- M-x eval-buffer 可以执行当前buffer内的Elisp代码
- 选中一个region后, M-x eval-region可以执行这个region内的代码

插件管理

​ emacs中的package包管理插件非常方便,首先添加以下代码到.emacs中,然后M-x package-list-packages打开包管理。

​ 我们还可以通过外部插件进行美化,进行美化之前我们需要配置插件的源(默认的源非常有限),最常使用的是 MELPA (Milkypostman's Emacs Lisp Package Archive)。它有非常多的插件(3000 多个插件)。 一个插件下载的次数多并不能说明它非常有用,也许这个插件是其他的插件的依赖。在这里 你可以找到其安装使用方法。添加源后,我们就可以使用 M-x package-list-packages 来查看所有 MELPA 上的插件了。在表单中可以使用 I 来标记安装 D 来标记删除, U 来更新,并用 X 来确认。你可以直接将下面的代码复制到你的配置文件顶端,从而直接使用 Melpa 作为插件的源。 你可以将你需要的插件名字写在 my/packages 中,Emacs 在启动时会自动下载未被安装 的插件。

(when (>= emacs-major-version 24)
     (require 'package)
     (package-initialize)
     (setq package-archives '(("gnu"   . "http://elpa.emacs-china.org/gnu/")
		      ("melpa" . "http://elpa.emacs-china.org/melpa/"))))

;; 注意 elpa.emacs-china.org 是 Emacs China 中文社区在国内搭建的一个 ELPA 镜像

 ;; cl - Common Lisp Extension
 (require 'cl)

 ;; Add Packages
 (defvar my/packages '(
		;; --- Auto-completion ---
		company
		;; --- Better Editor ---
		hungry-delete
		swiper
		counsel
		smartparens
		;; --- Major Mode ---
		js2-mode
		;; --- Minor Mode ---
		nodejs-repl
		exec-path-from-shell
		;; --- Themes ---
		monokai-theme
		;; solarized-theme
		) "Default packages")

 (setq package-selected-packages my/packages)

 (defun my/packages-installed-p ()
     (loop for pkg in my/packages
	   when (not (package-installed-p pkg)) do (return nil)
	   finally (return t)))

 (unless (my/packages-installed-p)
     (message "%s" "Refreshing package database...")
     (package-refresh-contents)
     (dolist (pkg my/packages)
       (when (not (package-installed-p pkg))
	 (package-install pkg))))

 ;; Find Executable Path on OS X
 (when (memq window-system '(mac ns))
   (exec-path-from-shell-initialize))

安装主题

(add-to-list 'my/packages 'monokai-theme)

然后使用下面的配置使其每次打开编辑器时加载主题,

(load-theme 'monokai 1)

ORG.MODEL使用

章节

  org-mode用* 标识章节,一个* 代表一级标题,两个* 代表两级标题,以此类推。

  在Emacs中输入以下内容:

* 标题一
** 标题二

  注意型号后面有空格。可以发现,不同层级标题的颜色是不一样的。按Alt加左右键能够升降标题的层级。一些常用快捷键如下:

  • S+Tab 展开、折叠所有章节
  • Tab 对光标所在章节进行展开、折叠
  • M+left/right 升级/降级标题

表格

  列表是文本中一个比较常用的元素,可以列出各种待完成的事项等。org-mode提供了一种很独特的功能,可以加入checkbok(实际就是加入一对中间有空格的方括号[ ])标记任务的完成状况,而且如果一个总任务有多个子任务,还可以根据子任务的完成情况计算总进度(只需要在总任务后面添加一对方括号,里面加上%/[%],[/])。列表分为有序和无序两种,有序列表以1.1)开头,无序列表以+-开头 后面,同样,后面要跟一个空格。      我们输入一个无序列表:

+ treeroot  
    + branch1
    + branch2

  在输入的时候,我们按M-RET(Alt+回车)可以自动输入同级的条目,按M+left/right调整层级。同理,我们还可以输入一个有序列表:

1) [-] 任务1 [33%]
   1) [ ] 子任务1
   2) [X] 子任务2
   3) [ ] 子任务3
2) [ ] 任务2

  我们按M-S-RET 可以输入一个带checkbox的列表项,而在总任务后面可以输入一个[%]或者[/]则能自动计算总任务进度。最后结果如图所示。

常用快捷键: - M-RET 插入同级列表项 - M-S-RET 插入有 checkbox的同级列表项 - C-c C-c 改变 checkbox状态 - M-left/right 改变列表项层级关系 - M-up/dowm 上下移动列表项

脚注

  用[fn:1]的方式插入脚注,而在最下面插入 

 [fn:1]本文参考自http://orgmode.org/orgguide.pdf

这个标签是可以点击的。

表格

 表格常用于数据展示,org-mode提供了方便的列表操作。其中最独特的是支持类似于Excel的表格函数,可以完成简单的求和等操作 创建表格时,在新建表格时,首先输入表头:

input | Name  |  Phone | sub1 | sub2 | total |
|-

然后在第二行后面按 tab,表格就会自动生成:

| Name    |  Phone | sub1 | sub2 | total |
|---------+--------+------+------+-------|
|         |        |      |      |       |

下面我们填入一些数据,在填写的过程中,按Tab键可以调到右方表格,按Enter则能跳到下方表格。如果同时按住Shift,则是反方向跳。输入表格完成后,按 C-c C-c则能自动对齐表格,出入完成对齐后,表格如下:

| Name        |  Phone | sub1 | sub2 | total |
|-------------+--------+------+------+-------|
| maple       | 134... |   89 |   98 |       |
| wizard      | 152... |   78 |   65 |       |
| Hello World | 123... |   76 |   87 |       |
| hehe        | 157... |   87 |   78 |       |

下面我们来体验下org-mode的强大的表格函数。我们在total列任选一个位置,输入=$3+$4 ,然后按C-u C-c C-c ,org-mode便能自动为我们计算所有三列加四列的和,并放到第五列。最后完成的表格如下

| Name        |  Phone | sub1 | sub2 | total |
|-------------+--------+------+------+-------|
| maple       | 134... |   89 |   98 |   187 |
| wizard      | 152... |   78 |   65 |   143 |
| Hello World | 123... |   76 |   87 |   163 |
| hehe        | 157... |   87 |   78 |   165 |
# +TBLFM: $5=$3+$4

 如果要插入行和列,可在表头添加一个标签或者新起一行,输入|再调整格式即可。其中最后一行是ogr-mode自动添加的。一些快捷键如下:

  • C-c | 通过输入大小的方式插入表格
  • C-c C-c 对齐表格
  • Tab 调到右边一个表格
  • enter 跳到下方的表格
  • M-up/right/left/right 上下左右移动行(列)
  • M-S-up/right/left/right 向上下左右插入行(列)

链接

  链接用于链接一些资源地址,如图片、文件、URL等。 链接的格式是:

[[链接地址][链接内容]]

如:

 [[http://orgmode.org/orgguide.pdf][grgguid.pdf]]]
 [[file:/home/maple/图片/test.jpg][a picture]]

如果去掉标签,则能直接显示图片:

[[file:/home/maple/图片/test.jpg]]

  直接显示的图片在Emacs里默认不显示,需按C-c C-x C-v才能显示,在输出成其他格式(html、pdf……)后也能看到。    常用快捷键: - C-c C-x C-v 直接预览图片。

待办事项(TODO)

  TODO是org-mode最具特色的一个功能,也是org-mode设计的初衷,org-mode的作者本意是用其来完成一个个人时间管理程序(GDT)。因此,可以用org-mode来做一个个人时间管理工具!   下面我们来看怎么写TODO。TODO 也是一类标题,因此也需要用*开头,在Emacs中输入:

** TODO 洗衣服

可以看到当中的TODO变成了红色,我们讲光标移到该行,按C-c C-t,则发现TODO变成了DONE(这个序列可以自己定义,详见org-mode手册)。org-mode兼有了标题和列表的功能,也可以添加checkbox和完成进度,除此之外,还可以设计优先级。 我们输入:

*** TODO [# A] 任务1
*** TODO [# B] 任务2
*** TODO 总任务 [33%]
**** TODO 子任务1
**** TODO 子任务2 [0%]
      - [-] subsub1 [1/2]
       - [ ] subsub2
       - [X] subsub3
    **** DONE 一个已完成的任务

一些常用操作如下: - C-c C-t 变换TODO的状态 - C-c / t以树的形式展示所有的 TODO - C-c C-c 改变 checkbox状态 - C-c, 设置优先级(方括号里的ABC) - M-S-RET 插入同级TODO标签

标签Tags

在org-mode中,可以给每一章节添加一个标签,我们可以通过树的结构来查看所有带标签的章节。在每一节中,子标题的标签会继承父标题标签。 输入:

*** 章标题   :work:learn:
**** 节标题1     :fly:plane:
**** 节标题2     :car:run:
一些常用命令如下: - `C-c C-q` 为标题添加标签 - `C-c / m` 生成带标签的树

时间

org-mode可以利用Emacs的时间空间插入当前时间。 输入C-c . 会出现一个日历,我们点选相应的时间即可插入。

<2015-02-17 二>

时间前可以加DEADLINE:和SCHEDULED:表示时间的类型如:

DEADLINE:<2015-02-12 四>

下面给出一个常见的TODO标签的模板:

*** TODO    洗衣服
SCHEDULED: <2015-02-19 四>
DEADLINE: <2015-03-01 日>

常用命令如下: - C-c .插入时间

一些特殊文本格式

和其他标记语言一样,org-mode也支持各种特殊文本格式(如斜体、下划线等)。如下所示:

*bold*
/italic/
_underlined_
=code=
~verbatim~
+strike-through+

富文本导出

org-mode的强大之处还在于它能到出成各种不同的格式,例如html、pdf等,在导出时,可以加入一些说明符号,来制定导出选项,常用导出符号如下:

设置标题和目录:

# +TITLE: This is the title of the document
# +OPTIONS: toc:2 (only to two levels in TOC)
# +OPTIONS: toc:nil (no TOC at all)

添加引用:

# +BEGIN_QUOTE
Everything should be made as simple as possible,
but not any simpler -- Albert Einstein
# +END_QUOTE

设置居中:

# +BEGIN_CENTER
    Everything should be made as simple as possible,but not any simpler
# +END_CENTER

设置样例(在这里面的内容将会被直接输出,不会被转义)

# +BEGIN_EXAMPLE
这里面的字符不会被转义
# +END_EXAMPLE

注释,这些内容不会被导出

注释的用法#  this is comment

# +BEGIN_COMMENT
这里的注释不会被导出
# +END_COMMENT

Latex使用,org-mode能支持直接输入LaTeX,在导出后LaTeX能被正确解释:

[\begin{equation} \nabla^2 x=\int_\Omega \frac{a}{\log{b} } \sum^n_{i=1} a_i d\Omega \end{equation}]

插入源代码

org-mode除了可以直接插入源代码之外,可以直接求出运行结果,这也是其强大之处,在使用之前,需要在.emacs配置文件中设置加载的运行语言:

(org-babel-do-load-languages
 'org-babel-load-languages
 '(
   (sh . t)
   (python . t)
   (R . t)
   (ruby . t)
   (ditaa . t)
   (dot . t)
   (octave . t)
   (sqlite . t)
   (perl . t)
   (C . t)
   ))

可以先测试一下python,先在.elisp文件中添加配置文件

(org-babel-do-load-languages
 'org-babel-load-languages
 '((python . t)))

在org文件中运行

#+BEGIN_SRC python :results output
  import sys

  print sys.version
  print sys.prefix
#+END_SRC

输出的结果是

python计算输出

设置好之后输入:

# +BEGIN_SRC emacs-lisp
(+ 1 2 3 4)
# +END_SRC

将光标移到代码块内,按C-c C-c,org-mode会自动添加如下一行:

# +RESULTS:
: 10

这正是该代码的计算结果。下面试一试Python代码:

# +BEGIN_SRC python :results output
a = 1+1
print a
# +END_SRC

# +RESULTS:
: 2

下面测试一下C语言

# +begin_src C++ :includes <stdio.h>
  int a=1;
  int b=1;
  printf("%d\n", a+b);
# +end_src

# +RESULTS:
: 2

生成快捷键

<s + TAB` 可以直接生成 `#+BEGIN_SRC`
`<e + TAB` 可以直接生成 `#+BEGIN_EXAMPLE`
`<l + TAB` 可以直接生成 `#+BEGIN_EXPORT latex
其他以此类推。。。

常用快捷键: - C-c C-c 对当前代码块求值

关于导出

org-mode导出pdf需要LaTeX支持,而导出html很方便,但是导出的html美柚任何样式,org-mode为每个模块都添加了css的标签,我们可以将现成的css文件直接加入,便能得到一个好看的输出样式了:

在头部加入

# +HTML_HEAD: <link rel="stylesheet" type="text/css" href="style1.css" />

该代码加载我们的css。下面我们来将我们的文件导出成html。按C-c C-e会出现一个如图的提示框,问我们导出那种格式,我们选h导出html。

magit插件使用

​ Magit is an interface to the version control system Git, implemented as an Emacs package. Magit aspires to be a complete Git porcelain. While we cannot (yet) claim that Magit wraps and improves upon each and every Git command, it is complete enough to allow even experienced Git users to perform almost all of their daily version control tasks directly from within Emacs. While many fine Git clients exist, only Magit and Git itself deserve to be called porcelains.magit官网

​ 使用emacs阅读编辑代码,使用其magit-mode来进行Git管理。这里简单介绍一些操作:

​ emacs编辑状态时,输入M-x: magit-status,进入magit管理界面,以下是一些操作

TAB       magit-toggle-section
RET       magit-visit-item
C-w       magit-copy-item-as-kill
C-x       Prefix Command
ESC       Prefix Command
SPC       magit-show-item-or-scroll-up
!        magit-key-mode-popup-running
$        magit-display-process
\+        magit-diff-larger-hunks
\-        magit-diff-smaller-hunks
.        magit-mark-item
0        magit-diff-default-hunks
1        magit-show-level-1
2        magit-show-level-2
3        magit-show-level-3
4        magit-show-level-4
:        magit-git-command
=        magit-diff-with-mark
?        magit-describe-item
A        magit-cherry-pick-item
B        magit-key-mode-popup-bisecting
C        magit-add-log
D        magit-diff
E        magit-interactive-rebase
F        magit-key-mode-popup-pulling
G        magit-refresh-all
I        magit-ignore-item-locally
L        magit-add-change-log-entry-no-option
M        magit-key-mode-popup-remoting
P        magit-key-mode-popup-pushing

R        magit-rebase-step

S        magit-stage-all

U        magit-unstage-all
X        magit-reset-working-tree
^        magit-goto-parent-section
a        magit-apply-item
b        magit-key-mode-popup-branching
c        magit-log-edit
d        magit-diff-working-tree
e        magit-ediff
f        magit-key-mode-popup-fetching
g        magit-refresh
h        magit-toggle-diff-refine-hunk
i        magit-ignore-item
k        magit-discard-item
l        magit-key-mode-popup-logging
m        magit-key-mode-popup-merging
n        magit-goto-next-section
o        magit-key-mode-popup-submodule
p        magit-goto-previous-section
q        magit-quit-session
r        magit-key-mode-popup-rewriting
s        magit-stage-item
t        magit-key-mode-popup-tagging
u        magit-unstage-item
v        magit-revert-item
w        magit-wazzup
x        magit-reset-head
z        magit-key-mode-popup-stashing
DEL       magit-show-item-or-scroll-down

SQL-MODE

首先在配置文件中添加支持,(require ob-sql),然后在org文件中使用:

 this is a connection
  :PROPERTIES:
  :header-args:sql: :engine mysql :dbhost 127.0.0.1 :database demo :dbuser user :dbpassword password
  :END:
   #+BEGIN_SRC sql
     SELECT 1 + 1;
   #+END_SRC

参考文献

emacs中国论坛

emacs教程

知乎高赞回答

ORG-MODE使用

一年成为Emacs高手