(转)Emacs入门

本文介绍了Emacs编辑器的功能特点,包括编辑文本、程序编辑、文件管理和系统模拟等。此外还详细讲解了Emacs的基本操作、窗口管理和配置方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(转)Editor MACroS(宏编辑器)

  最初,人们认为Emacs是一个编辑器,与Vim一起并称为两大编辑神器,据说Vim是编辑器之神而Emacs是神之编辑器,又据说这世界上的程序员分三种,一种是使用Emacs,一种是使用Vim,另外一种是其他。也有人认为Emacs是一个架构在编辑器上的集成环境,除了编辑功能外,还可以完成文件管理,终端模拟,浏览网页,收发邮件,编译程序,以及煮咖啡等工作。更有人说Emacs是伪装成编辑器的操作系统,甚至说Eamcs是一种信仰。

  Emacs最初由Richard Stallman于1975年开发,之后产生了众多的衍生版本,而目前使用得最多的两个版本是Richard Stallman在1984年开发的GNU Emacs和1991年由Jamie Zawinski写成的XEmacs。Emacs可谓历史悠久,可以说Emacs的历史,等于一部计算机史,等于一部世界黑客史

附:编辑器大战

Emacs能做什么王垠师兄如是说: 据我所知,Emacs 的能力包括:

  1. 编辑文本
  2. 编辑程序,
  3. 作为其他程序的界面
  4. 作为操作系统
  5. 煮咖啡。

Emacs是一个具有超强扩展性,超强定制性的操作平台,它能做什么取决于你对它的定制和扩展。Emacs的强大来源于其近乎无限的可定制性和可扩展性。

Emacs 介绍

Emacs界面(从上到下):

  • 缓冲区buffer
  • 状态栏:[U] [**|–|%%] [name] [All|Bot] [L23] [fundamental]
  • 回显区:提示正在进行的操作,如“文件已保存”,等待输入命令等。

命令: 通过M-x command方式执行命令,执行命令时,可用TAB补全,使用M-p上翻,使用M-n下翻。Eamcs的取消按钮是连按三下ESC ( M-x keyboard-escape-quit ),但当使用一些交互式命令时可能无法使用此种方法,此时可用C-g ( M-x keyboard-quit )。

快捷键: 用快捷键(组合键)发送命令,C- , M- , C-M- , S- , RET , TAB , ESC , SPC , DEL , Delete,如C-x C-c ( M-x save-buffers-kill-emacs),还有些命令可传递参数,如C-u(参数)C-f 参数表示重复执行C-f 的次数

模式: 主要模式major mode和次要模式minor mode
  主要模式由文件类型决定,常见的有:
fundamental:缺省的Emacs模式,有最少的设置和绑定
text-mode:编辑文本的基本模式
c-mode:用于C程序源代码
lisp-interaction-mode:用于编辑和编译Lisp
ptex-mode:用于编辑TeX文档
  次要模式可以组合到主要模式中,常见的如:
abbrev-mode:用于生成和使用缩写
auto-fill-mode:用于自动文字环绕,填充较长的行和段落
line-number-mode:显示当前行号
overwrite-mode:覆盖模式,代替默认的插入模式

  可以用命令来指定模式:M-x modeName,对于一个buffer来说,当前的主要模式只能有一种,当指定主要模式时,原来的主要模式会被替换,而当前的次要模式可以有多种。如果输入的模式包含在当前模式中,对于主要模式,会清空所有的次要模式,对于次要模式,会关闭这个次要模式。模式的变化在状态栏中可以看到。

帮助文档:

快捷键命令说明
C-h ?关于帮助系统的帮助,可以通过SPC和DEL键滚动,通过ESC退出
C-h tM-x help-with-tutorial进入《Emacs 快速指南》
C-h rM-x info-emacs-manualEmacs使用手册
C-h iM-x info《Emacs说明》
C-h aM-x apropos-command搜索命令》
C-h vM-x describe-variable查看变量说明》
C-h fM-x describe-function查看函数说明
C-h mM-x describe-mode查看当前mode的相关文档,包含mode中的命令、快捷键等》
C-h k KEYSM-x describe-key KEYS查看快捷键对应的命令及其简要说明
C-h c KEYSM-x describe-key-briefly查看键绑定说明》
C-h wM-x where-is查看某个命令对应的快捷键》
C-h bM-x describe-bindings查看当前buffer所有的快捷键列表》
KEYS C-h查看当前buffer中以某个快捷键序列开头的快捷键列表

使用帮助时,可能会分割出其他frame,可通过C-x 1 关闭。

一. 编辑功能

1. 文件操作

文件操作都集中在C-x “菜单”中:

快捷键C-x命令M-x说明
C-x C-ffine-file打开文件或者目录
C-x C-csave-buffers-kill-emacs保存并退出
C-x C-ziconify-or-deiconify-frame挂起(最小化)
C-x C-rfine-file-read-only只读模式打开
C-x iinsert-file插入文件
C-x C-ssave-buffer保存
C-x ssave-some-buffers保存所有buffers
C-x C-wwrite-file另存为
C-x RET rrevert-buffer-with-coding-system以指定编码读取文件
C-x RET fset-buffer-file-coding-system以指定编码保存文件
revert-buffer恢复至初始状态
C-x ddired进入目录列表模式
C-x C-dlist-directory获取文件列表(简洁)

2. 光标定位

向前向后向下向上
翻页C-vM-v
字符C-fC-bC-nC-p
单词M-fM-b
M-aM-e
C-aC-e
段落M-{M-}
缓冲区M-<M->

其他:

M-g M-ggoto-line跳转到某行
M-xgoto-char跳转到字符位置
C-M-lreposition-window将当前行卷至页面中部(使用数字参数指定行)
M-r M-xmove-to-window-line移动光标至页面中间的行(使用数字参数指定行)

3.输入删除

  输入很简单,直接在缓冲区输入即可,不像Vim

-向前向后
字符C-dDEL
单词M-dM-DEL
C-k(删除至行尾)
整行C-S-backspace
按表达式删除C-M-k
区块C-w
删除连续空格M-x delete-horizontal-space

注1. 在PC中,用Backspace代替DEL
注2. 单词、行、区块的删除是kill,相当于剪切,会被放入kill-ring,字符及空格的删除是delete

4.复制粘贴

复制前要选择:C-@开始区块选择,然后移动光标,选中区域会高亮
剪切:前面“剪切”部分包括了一些剪切操作,对区块剪切可用C-w
复制:区块复制用M-w
粘贴:C-y粘贴kill-ring堆栈的最后一次内容,C-y之后可以继续M-y,对kill-ring内容依次召回。

5.撤销重做

撤销:C-/ (每插入20个字符,视为一个undo的单位)
重做:C-/ 后,依次输入C-g C-/ 就可以redo

二.高级编辑

1.窗口管理

---
C-x 2split-window-vertically水平分割
C-x 3split-window-horizontally竖直分割
C-x 1delete-other-window只保留当前窗格
C-x 0delete-window关闭当前窗口
C-x oother-window切换窗口
C-M-vscroll-other-window滚动下一个窗格

2.缓冲区管理

Emacs打开新的buffer时,并不会关闭原来的buffer,需要手动操作

---
C-x C-blist-buffers查看缓冲区列表
C-x bswitch-to-buffer切换缓冲区
C-x kkill-buffer关闭缓冲区

其他可参考ibuffer.el扩展。

3.搜索和替换

Emacs搜索包括增加搜索和一般搜索,前者指在前一次搜索的结果上继续搜索,在使用增加搜索时,若上一次搜索之后进行了其他操作,则需要连续按两次快捷键召回关键词。

(1). 增加搜索

---
C-s M-xisearch-forward向前增加搜索
C-r M-xisearch-backward向后增加搜索
C-M-s M-xisearch-forward-regexp正则表达式向前增加搜索
C-M-r M-xisearch-backward-regexp正则表达式向后增加搜索

(2). 一般搜索

---
M-xsearch-forward向前搜索
M-xsearch-backward向后搜索
M-xsearch-forward-regexp正则表达式向前搜索
M-xsearch-backward-regexp正则表达式向后搜索

(3). 替换

---
M-xreplace-string替换
M-xreplace-regexp正则表达式替换

(4). 询问替换

---
M-% M-xquery-replace询问替换
C-M-% M-xquery-replace-regexp正则表达式询问替换

(5). 取消搜索

C-g 取消搜索,光标返回搜索前的位置,RET结束搜索,光标停留在当前位置。

3. 批量处理

批量处理的命令有很多,如:
选中区域,M-x untabify 将TAB字符转换为空格。
选中区域,M-x indent-region 对齐文本块。

三.简单配置

Emacser通常要对Emacs进行定制,使用起来才会爽。据说Vimer嘲笑Emacser的一个理由就是:

Emacser如果丢了配置文件就什么都干不了。

1.配置文件

# Emacs配置文件位置
~/.emacs
~/.emacs.d/init.el
~/.config/emacs/init.el

改一下颜色配置:

(set-background-color "black") ;; 使用黑色背景
(set-foreground-color "white") ;; 使用白色前景
(set-face-foreground 'region "green")  ;; 区域前景颜色设为绿色
(set-face-background 'region "blue") ;; 区域背景色设为蓝色

重启可使配置文件生效,但Emacser一般用 M-x eval-buffer 使其立即生效。

2.安装插件

  Emacs和Vim都有大量的插件,Emacs的插件文件一般都是以el为后缀,首先指定一个插件目录,如~/.emacs.d/lisps,然后在~/.emacs中指定插件目录和要使用的插件:

(add-to-list 'load-path "~/.emacs.d/lisp/"')
(require 'pluginname')

  还是对于颜色设置,前面的方法只是进行了一些简单的颜色设置,有热心人写了插件,配置好了很多方案,不仅仅是前景背景色,还包括语法高亮等,可从这里下载,解压后将color-theme.el文件和themes文件夹复制到插件目录,然后修改配置文件:

(add-to-list 'load-path "~/.emacs.d/lisp/"')
(require 'color-theme)
(color-theme-initialize)

  M-x eval-buffer使配置文件生效后,可执行插件提供的命令:M-x color-theme-select RET进入配色方案选择界面,此时可能希望将配色方案设成默认,按d,会出现该配置的提示信息,如:

color-theme-classic is an interactive Lisp function in
`color-theme-library.el'.
(color-theme-classic)
Color theme by Frederic Giroud, created 2001-01-18.
AntiqueWhite on darkslategrey scheme.  Based on Gnome 2, with my favorit
color foreground-color and fontlock color.

将类似 (color-theme-classic) 的内容添加到.emacs中,就可每次启动Emacs时自动选择配色方案了。

3.大佬进化

这里推荐几个有名的发行版:

转自:https://blog.youkuaiyun.com/fwenzhou/article/details/8827867

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值