Emacs 学习笔记

前言

C - chr 表示当输入字符 chr 时按住 CONTROL 键。

M - chr 表示当输入字符 chr 时按住 ALT(或 EDIT 或 META)键。

视图移动

  • C - v  向前移动一屏
  • M - v  向后移动一屏
  • C - l  将光标所在行置于屏幕的中央(多按几次会在屏幕最上方或最下方,可以加参数)

基本的光标控制

单格移动

  • C - n  下一行
  • C - p  上一行
  • C - f  下一格
  • C - b  上一格

跨词移动

  • M - f  到下一个词末尾
  • M - b  到上一个词开头
    【这里的“词”指英文单词,对中文来说,则是指移动到下一个标点符号。】

行间和行内移动

  • C - a  移动到当前行开头
  • C - e  移动到当前行末尾
  • M - a  移动到句首
  • M - e  移动到句尾

全文移动

  • C - <  移动到全文开头
  • C - >  移动到全文末尾

前缀参数

  • C - u + 数字 + 其他命令  一般表示这个命令重复做几次

  • 例外:给C-v 和 M-v 给定一个参数时,它们将滚动你指定的“行数”。

终止命令、退出、窗格

  • C - g      退出当前命令,或者退出minibuffer
  • C - x + C - c   退出emacs
  • C - x + 1    留下当前窗格
  • C - z      最小化,如果在终端里是挂起
             【即可以在终端进入另一个进程,用 % emacs 或者 fg 回去。】

插入与删除

  • backspace    删除光标前的一个字符
  • C - d      删除光标后的一个字符
  • M - backspace  移除光标前的一个词
  • M - d      移除光标后的一个词
  • C - k      移除从光标到“行尾”间的字符,
              【或者叫剪切,但不在剪切板里,在emacs自己的缓冲区】
  • M - k      移除从光标到“句尾”间的字符
  • C - y      召回最近一次的移除
  • M - y      选择某次移除召回(多次使用或者指定参数以选择)
  • C - @      选中
  • C - w      删除选中的内容

tips:

  1. 单独的 C-k 会把一行的内容移除,而第二个C-k则会移除换行符,并使其后所有的行都向上移动。C-k处理数字参数的方式很特别,它会把参数指定的那么多行连同其后的换行符一起移除。

  2. 如果你一次连按了好几下C-k,那么所有被移除的行会被存储在一起,算作同一次移除,只要一个C-y 就可以把它们都召回。

撤销

  • C - /
  • C - _
  • C - x + u

效果全都一样,可加前缀参数

文件

  • C - x + C - f + 绝对路径  寻找并打开一个文件,如果没有则新建一个
  • C - x + C - s       储存这个文件

【关掉文件备份用如下命令:M - x + customize-variable + 回车 + make-backup-files + 回车】

缓冲区(BUFFER)

Emacs 把每个编辑中的文件都放在一个称为“缓冲区(buffer)”的地方。每寻找到一个文件,Emacs 就在其内部开辟一个缓冲区。

  • C - x + C - b      列出缓冲区
  • C - x + b + 缓冲区名   进入某个缓冲区

【大多数情况下,缓冲区与跟其对应的文件是同名的(不包括目录名),不过这也
不是绝对的。用 C-x C-b 得到的缓冲区列表总是显示缓冲区名。】

  • C - x + s + 回答询问   保存多个缓冲区

命令集扩展

扩展命令有两种风格:

  • C - x  字符扩展。 C - x 之后输入另一个字符或者组合键。(上面提到了好多)
  • M - x  命令名扩展。M - x 之后输入一个命令名。

比如:

  • M - x + replace-string  全文替换
  • M - x + recover-file   将自动保存文件提取到当前文件

模式

  • M - x + 模式名称  切换到模式

主模式:比如 Fundamental模式,Lisp 模式, Text 模式。

【主模式通常会改变一些命令的行为。不能同时使用多个。】

辅模式:比如 Auto Fill模式(自动换行,以后再学)

【辅模式是开关(enabled-disabled)而非切换】

搜索

  • C - s   向前搜索
  • C - r   向后搜索

【每输入一个字符都会搜索一次。】
【在输入字符串之后使用上面两个快捷键会搜索下一个或上一个结果】
【使用C - g或者enter退出搜索,前者使光标回到搜索前的位置,后者停留在当前搜索结果处】

多窗格

  • C - x + 0     关闭当前窗格
  • C - x + 2     将屏幕划分成两个窗格
  • C - x + 3     在当前窗格右边新建一个窗格~~(雾)~~
  • C - M - v     在另一个窗格移动视图
  • C - M - Shift - v  同上,反向
  • C - x + o     切换窗格
  • C - x + 4 + C - f  在下一个(切换窗格的顺序)窗格中打开文件
  • C - x + 5 + C - f  在新文件

多窗口

  • M - x + make-frame  打开新窗口
  • M-x delete-frame   关闭当前选中的窗口(必须要留有一个)

递归编辑

递归编辑状态由位于状态栏的方括号所指示,其中包含了用小括号来指明的模式名称。【比如在用 M-% 进行交互式替换的时候你又用了 C-s 进行搜索,这时替换模式并没有结束,但你又进入了搜索模式,这就是所谓的递归编辑。】

并无卵用

稍微有用的**tips:**离开递归编辑可以用 ESC ESC ESC。这是一个最通用的“离开”命令,你甚至可以使用它来关掉多余的窗格,或者离开小缓冲。你不能用 C-g 退出递归编辑,因为 C-g 的作用是取消“本层递归编辑之内”的命令和其参数。

帮助

  • C - h ?       有什么可以提供的帮助?
  • C - h + c + 命令   简短的解释
  • C - h + k + 命令   长篇大论的解释
  • C - h + f + 函数名  解释一个函数
  • C - h + v + 变量名  解释一个变量
  • C - h + a      相关命令搜索
  • C - h + i      for more information

简单的配置

(set-background-color "black")
(set-foreground-color "grey")

(column-number-mode)
(global-linum-mode t)
(tool-bar-mode 0)
;;(menu-bar-mode 0)
(scroll-bar-mode 0)

(setq-default cursor-type 'box)

(global-set-key (kbd "TAB") 'self-insert-command)
(setq c-basic-offset 4)
(setq-default tab-width 4)

(electric-pair-mode t)

(global-set-key (kbd "<backtab>") 'un-indent-by-removing-4-spaces)
(defun un-indent-by-removing-4-spaces ()
  "remove 4 spaces from beginning of of line"
  (interactive)
  (save-excursion
    (save-match-data
      (beginning-of-line)
      ;; get rid of tabs at beginning of line
      (when (looking-at "^\\s-+")
        (untabify (match-beginning 0) (match-end 0)))
      (when (looking-at "^    ")
        (replace-match "")))))

字体大小有点麻烦,到options->set default font里面手动修改就好了

猜你喜欢

转载自blog.csdn.net/xyyxyyx/article/details/84671095
今日推荐