Emacs使用

(转)Editor MACroS(宏编辑器)

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

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

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

Emacs 介绍

Emacs界面(从上到下):
菜单栏
工具栏
编辑区域,即缓冲区buffer
状态栏mode line:[U][**|--|%%][name][All|Bot][L23][fundamental]
交互区域,即回显区mini buffer:提示正在进行的操作,如“文件已保存”,等待输入命令等。

命令: 通过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 t M-x help-with-tutorial 进入《Emacs 快速指南》
C-h f M-x describe-function 查看函数说明
C-h k KEYS M-x describe-key KEYS 查看快捷键对应的命令及其简要说明
C-h r M-x info-emacs-manual Emacs使用手册
C-h i M-x info 《Emacs说明》
C-h a M-x apropos-command 搜索命令》
C-h v M-x describe-variable 查看变量说明》
C-h m M-x describe-mode 查看当前mode的相关文档,包含mode中的命令、快捷键等》
C-h c KEYS M-x describe-key-briefly 查看键绑定说明》
C-h w M-x where-is 查看某个命令对应的快捷键》
C-h b M-x describe-bindings 查看当前buffer所有的快捷键列表》
KEYS C-h 查看当前buffer中以某个快捷键序列开头的快捷键列表
使用帮助时,可能会分割出其他frame,可通过C-x 1 关闭。

一. 编辑功能

1. 文件操作

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

快捷键C-x 命令M-x 说明
C-x C-f fine-file 打开文件或者目录
C-x C-c save-buffers-kill-emacs 保存并退出
C-x C-z iconify-or-deiconify-frame 挂起(最小化)
C-x C-r fine-file-read-only 只读模式打开
C-x i insert-file 插入文件
C-x C-s save-buffer 保存
C-x s save-some-buffers 保存所有buffers
C-x C-w write-file 另存为
C-x RET r revert-buffer-with-coding-system 以指定编码读取文件
C-x RET f set-buffer-file-coding-system 以指定编码保存文件
revert-buffer 恢复至初始状态
C-x d dired 进入目录列表模式
C-x C-d list-directory 获取文件列表(简洁)

2. 光标定位

向前 向后 向下 向上
翻页 C-v M-v
字符 C-f C-b C-n C-p
单词 M-f M-b
M-a M-e
C-a C-e
段落 M-{ M-}
缓冲区 M-< M->

其他:

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

3.输入删除

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

- 向前 向后
字符 C-d DEL
单词 M-d M-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 2 split-window-vertically 水平分割
C-x 3 split-window-horizontally 竖直分割
C-x 1 delete-other-window 只保留当前窗格
C-x 0 delete-window 关闭当前窗口
C-x o other-window 切换窗口
C-M-v scroll-other-window 滚动下一个窗格

2.缓冲区管理

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

- - -
C-x C-b list-buffers 查看缓冲区列表
C-x b switch-to-buffer 切换缓冲区
C-x k kill-buffer 关闭缓冲区
其他可参考ibuffer.el扩展。

3.搜索和替换

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

(1). 增加搜索

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

(2). 一般搜索

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

(3). 替换

- - -
M-x replace-string 替换
M-x replace-regexp 正则表达式替换

(4). 询问替换

- - -
M-% M-x query-replace 询问替换
C-M-% M-x query-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.csdn.net/fwenzhou/article/details/8827867

posted @ 2024-11-02 18:12  sgqmax  阅读(6)  评论(0编辑  收藏  举报