国际化
Emacs支持对多种文字的文本编辑,包括UTF-8在内的诸多编码系统,加上对多种字符集、文稿、书写系统,以及不同文化的书写习惯都提供了支持,使得世界上大多数语言的使用者都能通过Emacs进行文本处理。
Emacs还能通过调用诸如ispell这样的外部程序,实现多种语言的拼写检查。
跨平台性
Emacs是目前世界上最具可移植性的重要软件之一,能够在当前大多数操作系统上运行,包括类Unix系统(GNU/Linux、各种BSD、Solaris、AIX、IRIX、Mac OS X等等)、MS-DOS、Microsoft Windows以及OpenVMS等,还有移动Android平台以及iOS。
缓冲区的概念
初学Emacs需要理解什么是 缓冲区:
Emacs里的一切操作都发生在编辑缓冲区(buffer)里,它通常是某个文件的工作副本。如果你正在编辑的编辑缓冲区里包含着某个文件的一个副本,那么当你保存自己所做的改动时,Emacs把编辑缓冲区的内容复制到文件中。
除了工作在文件副本上的缓冲区外,还有一些做临时工作的缓冲区,它就像一张草稿纸,当然也可以随时使用write-file命令(”C-x C-w”)或save-buffer命令(“C-x C-s”)保存这类临时工作缓冲区的内容。
安装
1. Windows下安装Emacs
请到以下链接下载Windows版的Emacs:
https://ftp.gnu.org/gnu/emacs/windows/
下载后,用Winrar或7-zip等解压
打开bin文件夹,运行其中的 emacs.exe 文件即可开启Emacs,不需要安装
2. Linux下安装Emacs
Debian一族(包括Ubuntu)下安装Emacs:
0 1 |
sudo apt-get install emacs |
Redhat一族(包括Fedora)下安装Emacs:
0 1 |
sudo yum install emacs |
- 首先去
ftp://ftp.gnu.org/pub/gnu/emacs
- 上面有Emacs的几乎所有版本的源代码包,下载最新版的(用老版的也可以),如: emacs-25.1.tar.gz
- 解压 emacs-25.1.tar.gz 并编译,安装,在终端(Terminal)中依次运行以下命令(如果是其他版本,则将如下命令中的25.1替换为相应版本即可):
0 1 2 3 4 5 |
tar -zxvf emacs-25.1.tar.gz #(解压文件) cd emacs-25.1 #(进入目录) ./configure #(配置) make #(编译) sudo make install #(安装,会提示输入你的用户密码) |
- 安装完之后要启动Emacs很简单,开一个终端(Terminal),输入emacs,回车,就可以了。
不过小编嫌这样太麻烦,可以用更简单的方式来打开Emacs,我这里用一个键就可以了(演示环境是Fedora,不过其他系统如Ubuntu类似):
- 打开Fedora的“设置” (肯定知道设置在哪里吧)
- 选择“键盘”
- 选择列表中的“自定义快捷方式”,然后点击加号“+”,用于添加新的快捷方式
- 选择快捷方式的按键,小编这里选的是F2这个键,然后填写命令,就是“emacs”,再填写快捷方式的名称,这个随便填,我填的是“Emacs”,确定。
按F2键试试,是不是就启动Emacs啦?这酸爽,不言而喻!
自动补全插件
安装完Emacs之后,还需要安装一个自动补全(可以自动补全关键字,文本等)的扩展,非常强大,名叫company-mode,官网:
http://company-mode.github.io/
幸好,这个扩展并不需要我们按照传统的方式从官网下载、安装到Emacs里面,因为Emacs里有个安装扩展的列表,有点类似 Debian系列的 apt-get 和 Redhat系列的yum 这样的包管理工具,所以我们只需要按步骤安装:
- 按下 M-x 来调出命令输入 (在Windows下就是Alt + x 键)
- 输入 list-packages,回车
- 在出现的列表里,点击 company
- 在右边出现的新缓冲区里点击 Install
- 点击 Yes/是
常用快捷方式
Emacs的快捷键都是绑定于Ctrl和Alt(或称Meta, 在Mac下就是Cmd键)上的,例如C-x就是Ctrl+x,M-x就是Alt+x (在Mac下就是Cmd键)。当然所有的按键都可以自定义。
所以下面我在讲述快捷键的组合表示方式时:
- C 代表Ctrl键
- M 代表Alt键(在苹果的Mac OS系统下是Cmd键)
- C-x C-c 代表着“先按C-x,再按C-c”
- C-x k 代表着“先按C-x,松开手,再按k”
个人平时最常用的是这些快捷键组合
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
M-s : 新建一个buffer(缓冲区) C-x O : 注意是大写的O,不是零,所以需要按住shift键再按o键。用于在缓冲区之间切换 C-g : 取消当前操作 C-x u : 回到上一步,相当于Undo C-x 3 : 把缓冲区(buffer)分为左右两个,新的一个缓冲区是复制当前的缓冲区 (可以执行多次,来分割出很多小窗口) C-x 2 : 把缓冲区(buffer)分为上下两个,新的一个缓冲区是复制当前的缓冲区 (可以执行多次,来分割出很多小窗口) M-w : 选中文字的情况是复制文字,而如果没有选中文字则是复制当前的一行 C-w : 选中文字的情况是剪切文字,而如果没有选中文字则是剪切当前的一行 M-x : 调出命令输入,可以在后面接命令,比如man,svn-status,等 C-y : 黏贴 C-x C-s : 保存文本 C-x C-f : 打开文件,如果文件不存在,则新建文件 C-x C-v : 打开一个文件,取代当前缓冲区 C-x k : 关闭当前缓冲区(buffer) C-s : 向前搜索 C-r : 向后搜索 C-x h : 全选 C-v : 向下翻页 M-v : 向上翻页 C-f : 前进一个字符 C-b : 后退一个字符 M-f : 前进一个单词 M-b : 后退一个单词 C-@ : 标记开始区域 C-a : 移到行首 C-e : 移到行尾 M-a : 移到句首 M-e : 移到句尾 M-< : 缓冲区头部 M-> : 缓冲区尾部 M-g M-g,再输入数字 : 跳转到文本的第几行 C-x 0 : 关闭当前缓冲区 C-x C-c : 退出Emacs |
注意: 千万不要死记这些快捷键组合,随着你使用Emacs,很快就能记住的,相信我!
Emacs还有一个很大的好处就是几乎所有的快捷键按键都在键盘的左下角,用左手就能单独完成大部分操作,而右手则可以玩游戏(哦,不对,是操作鼠标),提高效率。
或者说,你用好了Emacs的快捷键组合,编辑代码时甚至不需要鼠标,两个手在键盘上就够了!
还有一个平时常用的功能就是查询函数,可以方便查询已定义的函数:
- 按下 M-x 来调出命令输入
- 输入 man ,也就是Linux或Unix系统的man命令,是manuall的缩写,也就是”手册”的意思
- 然后输入你要查询的函数名,回车
更多快捷键功能
帮助
C-h r 打开emacs 手册。
C-h f 查找一个函数的用法。
C-h k 查找快捷键的用途。
C-h a 查找匹配的命令。
C-h ? 显示帮助的帮助,说明帮助的用法。
文件操作
C-x C-f 打开文件,出现提示时输入/username@host:filepath可编辑FTP文件
C-x C-v 打开一个文件,取代当前缓冲区
C-x C-s 保存文件
C-x C-w 存为新文件
C-x i 插入文件
C-x C-q 切换为只读或者读写模式
C-x C-c 退出Emacs
编辑操作
C-f 前进一个字符
C-b 后退一个字符
M-f 前进一个单词
M-b 后退一个单词
C-a 移到行首
C-e 移到行尾
M-a 移到句首
M-e 移到句尾
C-p 后退一行
C-n 前进一行
M-x goto-line 跳到指定行
C-v 向下翻页
M-v 向上翻页
M-< 缓冲区头部
M-> 缓冲区尾部
C-M-f 向前匹配括号
C-M-b 向后匹配括号
C-l 当前行居中
M-n or C-u n 重复操作随后的命令n次
C-u 重复操作随后的命令4次
C-u C-u 重复操作随后的命令8次
C-x ESC ESC 执行历史命令记录,M-p选择上一条命令,M-n选择下一条命令
C-d 删除一个字符
M-d 删除一个单词
C-k 删除一行
M-k 删除一句
C-w 删除标记区域
C-y 粘贴删除的内容
注意:C-y可以粘贴连续C-k删除的内容;先按C-y,然后按M-y可以选择粘贴被删除的内容
C-@ 标记开始区域
C-x h 标记所有文字
C-x C-x 交换光标位置和区域标记区开头
M-w 复制标记区域
C-_ or C-x u 撤消操作
执行命令
M-x shell 打开SHELL
M-x ansi-term 运行term
M-! 执行SHELL命令 (shell-command)
M-1 M-! 执行SHELL命令,命令输出插入光标位置,不打开新输出窗口
M-| 针对某一特定区域执行命令(shell-command-on-region), 比如 C-x h M-|uuencode
窗口操作
C-x 0 关闭本窗口
C-x 1 只留下一个窗口
C-x 2 垂直均分窗口
C-x 3 水平均分窗口
C-x o 切换到别的窗口
C-x s 保存所有窗口的缓冲
C-x b 选择当前窗口的缓冲区
C-x ^ 纵向扩大窗口
C-x } 横向扩大窗口
C-x { 横向缩小窗口
缓冲操作
C-x C-b 打开缓冲区列表
d or k 标记为删除
~ 标记为未修改状态
% 标记为只读
s 保存缓冲
u 取消标记
x 执行标记的操作
f 在当前窗口打开该缓冲区
o 在其他窗口打开该缓冲区
目录操作
C-x d 打开目录模式
s 按日期/文件名排序显示
v 阅读光标所在的文件
q 退出阅读的文件
d 标记为删除
x 执行标记
D 马上删除当前文件
C 拷贝当前文件
R重命名当前文件
+新建文件夹
Z压缩文件
! 对光标所在的文件执行SHELL命令
g 刷新显示
i 在当前缓冲区的末尾插入子目录的内容
[n]m 标记光标所在的文件,如果指定n,则从光标所在的文件起后n个文件被标记
[n]u 取消当前光标标记的文件,n的含义同上
t 反向标记文件
%-m 正则标记
q 退出目录模式
说明:在目录模式中,如果输入!,在命令行中包含*或者?,有特殊的含义。*匹配当前光标所在的文件和所有标记的文件,?分别在每一个标记的文件上执行该命令。
程序编译
M-x compile 执行编译操作
M-x gdb GDB排错
M-x dbx DBX排错
M-x xdb XDB排错
M-x sdb SDB排错
搜索模式
C-s key 向前搜索
C-s 查找下一个
ENTER 停止搜索
C-r key 反向搜索
C-s C-w 以光标所在位置的字为关键字搜索
C-s C-s 重复上次搜索
C-r C-r 重复上次反向搜索
C-s ENTER C-w 进入单词搜索模式
C-r ENTER C-w 进入反向单词搜索模式
M-x replace-string ENTER search-string ENTER 替换
M-% search-string ENTER replace-string ENTER 交互替换
C-r 在进入查找/替换模式后,该命令进入迭代编辑模式
C-M-x 退出迭代编辑模式,返回到查找/替换模式
C-M-s 向前正则搜索
C-M-r 向后正则搜索
C-M-% 正则交互替换
SHELL模式
C-c C-c 相当于Bash下的C-c
C-c C-z 相当于Bash下的C-z
C-c C-d 相当于Bash下的C-d
M-p 执行前一条命令
M-n 执行下一条命令
C-c C-o 删除最后一条命令产生的输出
C-c C-r 屏幕滚动到最后一条命令输出的开头
C-c C-e 屏幕滚动到最后一套命令输出的结尾
C-c C-p 查看前一条命令的输出
C-c C-n 查看后一条命令的输出
打印资料
M-x print-buffer 先使用pr,然后使用lpr
M-x lpr-buffer 直接使用lpr
M-x print-region
M-x lpr-region
收发邮件
M-x mail 发送邮件, C-c C-s 发送,C-c C-c 发送并退出
M-x rmail 接受邮件
用 gnus 收发邮件,阅读新闻组
M-x gnus 可以通过强大的 gnus 来收发邮件,阅读新闻组。可以参考
或者阅读 gnus 自带的 manual 来获得详细信息。
C-x m 撰写新邮件
学习文档:https://www.emacswiki.org/