快捷键组合:


c-x

: Ctrl+x


m-x

: Alt+x


1. 常用的缺省 Emacs 按键前缀



按键前缀



描述


C-c


当前编辑模式特有的命令


C-x


文件和缓冲区命令


C-h


帮助命令


M-x


函数名称






2.

常用的 Emacs 缓冲区和文件函数



绑定



函数名



描述


C-x C-s


save-buffer


将当前的缓冲区保存到磁盘。


C-x s


save-some-buffers


要求将所有未保存的缓冲区保存到磁盘。


C-x C-c


save-buffers-kill-emacs


要求将所有未保存的缓冲区保存到磁盘,并退出


Emacs




C-x C-z


suspend-emacs


挂起


Emacs


并使之成为一个后台进程。


C-x C-b


list-buffers


列出所有缓冲区。


C-x k


kill-buffer


杀死一个缓冲区(缺省情况下为当前的缓冲区)。


C-x C-q


vc-toggle-read-only


切换当前缓冲区的可读状态(如果适用还可以执行版本控制)。


C-x i


insert-file


在插入点插入某个文件的内容。


M - <


移动到缓冲区开头


M


- >




移动到缓冲区末尾




3.

有用的 Emacs 键盘输入(用于移动和导航)



键盘输入



函数



描述


C-p


,



UpArrow


previous-line


将插入点向上移动到上一行。


C-n


,


DownArrow


next-line


将插入点向下移动到下一行。


C-f


,


RightArrow


forward-char


将插入点移动到下一个字符。


C-b


,


LeftArrow


back-char


将插入点移动到上一个字符。


M-f


forward-word


将插入点移动到下一个单词。


M-b


backward-word


将插入点移动到上一个单词。


C-v


,


PgDn


scroll-up


将文本向上滚动一屏。


M-v


,


PgUp


scroll-down


将文本向下滚动一屏。


Home


beginning-of-buffer


将插入点移到缓冲区的开始处。(在某些版本中,这个键被缺省定义为移动到当前行的开始处。)


End


end-of-buffer


将插入点移到缓冲区的末尾。(在某些版本中,这个键被缺省定义为移动到当前行的末尾。)


C-a


beginning-of-line


将插入点移到本行的开始处。


C-e


end-of-line


将插入点移到本行的结尾。


M-a


beginning-of-sentence


将插入点移到句子的开始处。


M-e


end-of-sentence


将插入点移到句子的结尾处。


C-{


beginning-of-paragraph


将插入点移到段落的开始处。


C-}


end-of-paragraph


将插入点移到段落的结尾处。






4.

常用 Emacs 编辑命令



键盘输入



函数



描述


Ins


overwrite-mode


切换改写模式(缺省为关闭)。


Backspace



Del


delete-backward-char


删除插入点前的字符。


C-d


delete-char


删除插入点处的字符。


M-d


kill-word


从插入点开始向前删除字符,直到单词末尾。


M-Backspace


,



M-Del


backward-kill-word


从插入点开始向回删除字符,直至单词的开始处。


C-_


undo


撤消您的上一次键入或操作


C-q





字符









XXX


quoted-insert


在插入点插入按键本身代表的

字符





或由八进制数字(



XXX





)表示的字符。


C-u





次数






命令


universal-argument


按总的

次数





(缺省为


4


次)连续执行

命令









5

.

用来标记和删除文本的 Emacs 函数



键盘输入



函数



描述


C-Space


set-mark-command


在插入点设置标记。


C-k


kill-line


删除从插入点到行末的所有文本。


C-w


kill-region


删除区域。


M-w


kill-ring-save


将区域保存在


kill ring


中,但不删除它。


C-y


yank


恢复来自


kill ring


的文本。




6

.

鼠标操作



鼠标命令



描述


B1


这一命令将设置插入点位置;拖动鼠标左键以设置区域。


B1-B1


这一命令标记一个单词。


B1-B1-B1


这一命令标记一行。


B2


这一命令插入最近被杀死的内容,并把光标移动到插入内容的末尾。


B3


这一命令会设置并突出显示区域,然后无需删除就将其放在


kill


缓冲区中。如果某个区域已经被突出显示并设置,该区域的末尾将移动到您单击的位置。


B3-B3


这个命令将突出显示区域,然后删除它。如果某个区域已经被突出显示并设置,该区域的末尾将移动到您单击的位置,此后该区域将被删除。





7.

query-replace 函数的选项






(M-%)



描述


空格、


y


替换这个匹配。


Del





n


跳过这一匹配到下一个匹配。


Enter





q


退出




query-replace






.


进行本次替换,然后退出




query-replace








进行本次替换,将光标移动到此处,然后退出




query-replace






C-r


指定递归编辑。


C-w


删除这个匹配并递归编辑。


C-l


重绘屏幕,并使这一行位于屏幕正中位置。


!


继续进行所有的替换,而无需再次询问。


E


编辑替换的字符串。


^


退回到前一次替换。


replace-regexp









query-replace-regexp




函数的工作方式是类似的,但是它们使用正则表达式作为要进行替换的字符串。



8. Emacs 搜索和替换命令



绑定



命令或者函数



描述


C-s


[



字符串



] [


C-w


] [


C-y


]


isearch-forward


前向增量地在整个缓冲区中搜索字符串(在缺省情况下,将搜索您上一次给出的搜索字符串,如果存在),


C-w




使用从光标处到光标所在单词的词尾之间的文本,以及




C-y




使用从光标处到光标所在行的行尾之间的全部内容。


C-r


[



字符串



] [


C-w


] [


C-y


]


isearch-backward


后向增量地在整个缓冲区中搜索

字符串





(在缺省情况下,将搜索您上一次给出的搜索字符串,如果存在),


C-w




使用从光标处到光标所在单词的词尾之间的文本,


C-y




使用从光标处到光标所在行的行尾之间的全部内容。


C-s Enter C-w





单词或者短语


word-search-forward


在整个缓冲区中前向搜索给定的单词或者短语(不管它们之间如何分隔)。


C-r Enter C-w





单词或者短语


word-search-backward


在整个缓冲区中后向搜索给定的单词或者短语(不管它们之间如何分隔)。


C-M-s


isearch-forward-regexp


在整个缓冲区中前向增量搜索给定的正则表达式。


C-M-r


isearch-backward-regexp


在整个缓冲区中后向增量搜索给定的正则表达式。



replace-string


从光标处到缓冲区末尾搜索给定的字符串,并使用给定的字符串来替换它。



replace-regexp


从光标处到缓冲区末尾搜索给定的正则表达式,并使用给定的字符串来替换它。


M-%


query-replace


从光标处到缓冲区末尾搜索给定的字符串,对于搜索到的每个实例,询问是否使用给定的字符串来进行替换。


C-M-%


query-replace-regexp


从光标处到缓冲区末尾搜索给定的正则表达式,对于搜索到的每个实例,询问是否使用给定的字符串来进行替换。




9. 高级 Emacs 标记和选择命令



键盘输入



功能



描述


C-u C-space



移动到标记环中的前一个标记。


C-x C-x


exchange-point-and-mark


交换光标和标记的位置。


M-@


mark-word


标记从光标到当前词尾的所有文本。


M-h


mark-paragraph


标记当前段落,不管光标处在什么位置。



transient-mark-mode


切换临时标记模式。


C-x h


mark-whole-buffer


标记整个缓冲区,不管光标处在什么位置。


M-B1



设置二次选择的开始,拖曳鼠标以进行二次选择。


M-B3



设置二次选择的结尾。


M-B1-B1



将一个单词标记为二次选择。


M-B1-B1-B1



将一行标记为二次选择。




10. 高级 Emacs 剪切和粘贴命令



键盘输入



功能



描述


M-(num)


C-k


kill-line


剪切行的

整数





数目。如果是


0


,剪切从光标到该行开头的全部内容;如果是负数,则反向剪切。


M-k


kill-sentence


剪切从光标到句子的结尾处的内容。


M-z


zap-to-char


删除从光标到指定的字符之间的所有文本。


M-y


yank-pop


移动到剪切环中的下一个槽位。


M-(num)


C-y


yank


粘贴剪切环中指定槽位的内容。




11. 使用书签的 Emacs 命令



键盘输入



功能



描述


C-x r m

Bookmark


bookmark-set


设置一个名为



Bookmark



的书签。


C-x r l


bookmarks-bmenu-list


列出所有已保存的书签。


M-x bookmark-delete


bookmark-delete


删除一个书签。


C-x r b

Bookmark


bookmark-jump


跳转至名为



Bookmark



的书签中所设置的位置。



M-x bookmark-save


bookmark-save


将所有的书签保存到书签文件


~/.emac.bmk


中。




12. 常见的 Emacs 窗口操作命令



功能



绑定



描述


split-window-vertically


C-x 2


从中间将当前窗口划分为两半,垂直地堆叠新的缓冲区。


switch-to-buffer-other-window


C-x 4 b


垂直地将当前窗口划分为两半,提示输入缓冲区以使用底部的窗口,并将其作为活动窗口。


display-buffer


C-x 4 C-o


在另一个窗口中显示一个缓冲区,提示输入缓冲区以使用另一个窗口,但保持当前窗口为活动窗口。(如果仅存在一个窗口,那么垂直地划分该窗口以显示另一个缓冲区。)


find-file-other-window


C-x 4 f


在新的缓冲区中打开新的文件,在新的垂直窗口中绘制它。


find-file-read-only-other-window


C-x 4 r


在一个新的只读缓冲区中打开新的文件,在新的垂直窗口中绘制它。


scroll-other-window


C-M-v


滚动到下一个由




C-x o




切换到的窗口。


scroll-all


切换


scroll-all


次要模式。当它处于打开状态时,将同时滚动显示当前窗口中的缓冲区的所有窗口,并滚动均等的相应距离。


other-window


C-x o


将光标移动到下一个窗口,并使其成为活动窗口。


windmove-up


移动到恰好位于当前窗口上方的窗口,如果它存在的话。


windmove-down


移动到恰好位于当前窗口下方的窗口,如果它存在的话。


windmove-left


移动到恰好位于当前窗口左边的窗口,如果它存在的话。


windmove-right


移动到恰好位于当前窗口右边的窗口,如果它存在的话。


delete-window


C-x 0


删除当前窗口,并将光标移动到使用




C-x o




将切换到的下一个窗口。


delete-other-windows


C-x 1


删除当前窗口之外的所有窗口。


kill-buffer-and-window


C-x 4 0


删除当前窗口,并剪切它的缓冲区。


split-window-horizontally


C-x 3


将当前窗口从中间划分为两半,水平地堆叠新的缓冲区。


follow-mode


切换


follow


次要模式。当它在缓冲区中处于打开状态时,将所有显示该缓冲区的窗口连接为一个较大的虚拟窗口。


enlarge-window


C-x ^


使当前窗口增加一行的高度;在其之前使用一个负数,将使得当前窗口减少一行的高度。


shrink-window-horizontally


C-x }


使当前活动窗口减少一列的宽度。


enlarge-window-horizontally


C-x {


使当前活动窗口增加一列的宽度。


shrink-window-if-larger-than-buffer


C-x -


将当前活动窗口的大小缩小到对于它所包含的缓冲区来说可能的最小尺寸。


balance-windows


C-x +


平衡所有窗口的尺寸,使它们的大小大致相等。


compare-windows


将当前窗口与下一个窗口进行比较,在两个窗口中从光标处开始比较,并在两个缓冲区中将光标移动到第一个不同的字符处,直到到达缓冲区的末尾为止。



设置EMACS变量


1.


有些变量可以包含数值或者字符串,而其他的变量则是











或者











:如果将一个变量的值设置为




nil




,那么它的值是











,值




t




表示













2.


使用




describe-variable




函数以得到变量的值。当您运行这个函数的时候,


Emacs


将打开一个新窗口,该窗口中包含该变量的给定当前





值。如果有的话,还将提供关于该变量的描述。这个函数与




C-h v




按键进行了绑定。


3.


使用


M-x set-variable


来进行变量设定




13. Emacs 键盘输入帮助命令汇总



键盘输入



函数



描述


Tab


如果给出了某个命令的一部分,那么这个命令将执行命令完成功能,显示给定命令的所有可能的输入值。



command prefix





或者



keystroke



C-h


这个命令用于描述给定

命令前缀





或者

键盘输入





的所有可能的命令和函数。


C-h c

keystroke


describe-key-briefly


这个命令将在迷你缓冲区中报告与给定

键盘输入





进行了绑定的函数名称。


C-h k

keystroke


describe-key


这个命令将打开新的帮助缓冲区窗口,其中描述了与给定

键盘输入

进行了绑定的函数。


C-h l


view-lossage


这个命令将打开新的缓冲区,并显示最后键入的


100


个字符。


open-dribble-file


这个命令将打开指定的文件,并将所有键盘输入的副本记录到该文件。




14. Emacs 函数帮助命令汇总



键盘输入



函数



描述


apropos


对于一个给定的正则表达式,这个命令将给出




apropos




命令和变量的列表。


C-h a

regexp


command-apropos


对于给定的

正则表达式





,这个命令将给出




apropos




命令的列表。


C-h b


describe-bindings


这个命令将在一个新的帮助缓冲区窗口中描述当前主要模式的所有有效的键绑定。


C-h f

function


describe-function


这个命令将在一个新的帮助缓冲区窗口中描述给定

函数





的用途。


C-h v

variable


describe-variable


这个命令将在一个新的帮助缓冲区窗口中描述给定

变量





的用途。


C-h w

function


where-is


这个命令将描述某个特定函数所绑定到的键盘输入(如果有的话)。



参考推荐:


Emacs

(百度百科)


Emacs 快捷键

(CSDN)


Emacs快捷键的总结

(疑难问答)

原文: Emacs快捷键