Emacs 学习笔记

来源:互联网 发布:虚拟机linux网络配置 编辑:程序博客网 时间:2024/05/14 03:35

Emacs基础HotKey及命令
(注:小括号内为命令,前为HotKey,RET指Enter键,如要执行命令需要在命令前加上Meta-x或Esc-x)

1.进入Emacs:
  $:emacs RET

2.离开Emacs
  $:Ctrl-z (suspend-emacs)
  说明:暂时离开Emacs,一般是回到shell的状态。需回到Emacs的状态,只要键入“%emacs”。有些Linux版本不支持该功能,如:gentoo。
  $:Ctrl-x Ctrl-c (save-buffers-kill-emacs)
  说明永久离开Emacs。
  离开命令说明:
  (1). y :同意对 echo area 所显示的缓冲区存档,其它文档是否存档,同样提示。
  (2). n :放弃对 echo area 所显示的缓冲区存档,其它文档是否存档,同样提示。
  (3). ! :同意对 echo area 所显示的缓冲区存档,其它文档一并存档,不在提示。
  (4). . :同意对 echo area 所显示的缓冲区存档,其它文档一并放弃,并不提示。
  (5). q :放弃所有存档状态,不执行任何存档动作。
  (6). C-r :此命令可用来流 目前所要储存的档案内容,当离开此流 状态 即回复存档的模
            式,系统会再度询问与存档有关的讯息。(不是很理解!)
  (7). C-h :帮助

3.Emacs屏幕说明(一下讨论,只针对text-only的终端,不完全适用在X Window)
  启动 EMACS 时,会产生二个预设的视窗,一个视窗用来输入一般 的文件,在未有文件输入前先用来展示前面提到的EMACS 版本、 线上辅助说明以及有关版权等讯息;另一个视窗用来输入指令 或是用做讯息的回应,称为minibuffer或 echo area。
  minibuffer
  $:Ctrl-x o (other-window)
  说明:使游标在视窗间移动,直到游标出现在minibuffer所在视窗为止。
  $:Ctrl-g (keyboard-quit)
  说明:离开minibuffer,游标出现在其他视窗。

4.Emacs缓冲区
  关于缓冲区自动存档:若所编辑的档案未存回硬碟时,EMACS 会自动产生一个暂存档。下次编辑此档时,EMACS 允予使用者从暂存档中将流失的资料回复。
  例如编辑的档案为 “emacs.doc”,在离开 EMACS 时未存回硬碟 , EMACS 会自动产生一个 “#emacs.doc#” 的自动储存档。当重新启动 EMACS 且编辑 “emacs.doc”档时, EMACS 会提示使用者此档案 已被更改过但未给予适当的储存。此时,使用者可自行决定是否要从自动储存的档案中(#emacs.doc#)将 “emacs.doc“ 档中 未被储存的资料找回。
  可经由如下的步骤将资料找回:
  (1). 键入 “Ctrl-x Ctrl-f RET”
  (2). Find file: ~/ filename
  (3). 在 Find file: 处输入所要编辑的文档
  (4). 会出现如下的信息: Auto save file is newer: consider M-x recovery-file
  (5). 键入“Meta-x recovery-file RET”
  (6). 此时 echo area 会自动出现相对应的自动储存的档案名称,若愿意执行恢复的动作,只要直接按下 RET        即可。否则,以“Ctrl-g” 指令,放弃此命令的执行。
  除了暂存档外, EMACS 对於每一个编辑的文档,都会在编辑前做一份备份,以防止在编辑的过程中因一时的疏忽而将文档毁损。备份档的设计是,当档案被存回硬盘后,备份档也不会因此而消失。EMACS 命名备份档的方式,是在所要编辑的档名之後加上 “ ~ ” 。例如,“emacs.doc”的备份档就为“emacs.doc~”。
  改变缓冲区默认设置命令(以auto-save-visited-file-name为例):
  (1). 以“Ctrl-h v”查阅auto-save-visited-file-name的默认值
  (2). 以“Meta-x set-variable”来设置参数
  (3). 再以“Ctrl-h v”查看修改后的参数值
  该设置方法只对当前EMACS有效,要保留此设定的参数值,必须将设定的参数值存储在“.emacs”的文档中。在 .emacs 档中设定变数“auto-save-visited-file-name”与“auto-saveinterval”的方法如下所示: (setq auto-save-visited-file-name t) (setq autosave-interval 350)(不是非常清楚!)
  参数说明:
  auto-save-visited-file-name: 设定自动存储文档的种类,可以设置为暂存档,也可以是在使用的原文档。
  delete-auto-save-file: 设定文档被存会硬盘后,自动存储的暂存档是否会自动删除。
  auto-save-interval: 设置自动存储时的字节数。
  auto-save-timeout: 设置自动存储的时间。
  缓冲区命令说明:
  $:Ctrl-x b buffer RET (switch-to-buffer)
  说明:用来选择不同的缓冲区,其预选的缓冲区是目前所使用的缓冲区之外,最近使用过的缓冲区。
  $:Ctrl-x Ctrl-b (list-buffer)
  说明:将目前EMACS所使用过的缓冲区显示出来。
  $:Meta-x buffer-menu
  说明:该指令与“Ctrl-x list-buffer” 相似,只是使用“Meta-x buffer-menu”指令时,echo area 处会显
  示出可运用的选项。其可运用的选项内容如下所示:Command: d, s, x, u; f, o, 1, 2, m, v; ~, %; q to 
  quit; ? for help。
  选项说明:
  (1). d :标示所要删除的缓冲区,此时并为真正的删除缓冲区,下达执行标记的命令(“x”)是才会被删除。
  (2). s :标示所要存储的缓冲区,此时并为真正的存储缓冲区,下达执行标记的命令(“x”)是才会被存储。
  (3). x :对做好标示的缓冲区,下达执行命令。
  (4). u :将设好的标记取消。
  (5). f :选择目前游标所在的缓冲区。
  $:Ctrl-x 2 (split-window-vertically)
  说明:将一个视窗分成上下两个视窗。
  $:Ctrl-x ^ (enlarge-window)
  说明:将目前游标所在的视窗拉长一列。此指令只有在 frame 存在一个以上的视窗时才有效果。
  $:Ctrl-u n Ctrl-x ^ (enlarge-window n)
  说明:与 Ctrl-x ^ 指令相似。不同之处在於,此指令可以将目前游标所在的视窗拉长 n 列以上。
  $:Ctrl-x o (other-window)
  说明:选择所要使用的视窗。
  $:Ctrl-x 0 (delete-window)
  说明:将目前游标所在的视窗删除。
  $:Ctrl-x 1 (delete-other-window)
  说明:保留目前游标所在的视窗,其余的视窗全部删除。(还未使用明白!)
  $:Ctrl-l (recenter)
  说明:清除屏幕
  $:Ctrl-v (scroll-up)
  说明:向上滚动屏幕一列
  $:Ctrl-u n Ctrl-v
  说明:向上滚动屏幕n列
  $:Meta-v (scroll-down)
  说明:向下滚动屏幕一列
  $:Ctrl-u n Meta-v
  说明:向下滚动屏幕n列
  $:Meta > (beginning-of-buffer)
  说明:将屏幕滚动到缓冲区最前端,游标移至第一列。
  $:Meta < (end-of-buffer)
  说明:将屏幕滚动到缓冲区最后端,游标移至最后一列。
  $:Ctrl-ESC-v (scroll-other-window)
  说明:前面六个卷动萤幕的指令,都是针对游标所在位置的视窗而言, 若要卷动其它的视窗,则必需使
      “Ctrl-ESC-v”。“Ctrl-ESC-v” 指令是用来卷动游标所在位置下一个视窗的萤幕。
  $:Ctrl-x < (scroll-left)
  说明:屏幕向左滚动
  $:Ctrl-x > (scroll-right)
  说明:屏幕向右滚动
  $:Ctrl-p 或 ↑ (previous-line)
  说明:向上移动游标
  $:Ctrl-u n Ctrl p
  说明:游标向上移动n列
  $:Ctrl-n 或 ↓ (next-line)
  说明:向下移动游标
  $:Ctrl-u n Ctrl-n
  说明:游标向下移动n列

5.Emacs进入Shell模式
  Emacs的模式有两种,为主要模式(major mode)与次要模式minor mode。
  在Emacs中执行Shell
  (1). shell command mode
       $:ESC-!(shell-command)
       说明:进入shell command mode
       $:ESC- (shell-command-on-region)
       说明:针对某一特定区域执行shell command mode 的 shell 指令。
       $:Ctrl-u ESC-!
       说明:将 shell 指令执行的结果,输出到游标所在的位置。
       $:Ctrl-u ESC-
       说明:将 shell 指令执行的结果,输出到游标所在的位置。
  (2). shell mode
       $:ESC-x shell
       说明:进入shell mode

6.Emacs目录编辑
  进入Dired模式命令
  $:ESC-x dired

原创粉丝点击