菜鸟科技网

如何在Linux系统下高效使用Emacs命令行模式,实现文本编辑与系统管理的无缝集成?

启动 Emacs

启动 Emacs 非常简单,只需在终端输入 emacs 命令。

如何在Linux系统下高效使用Emacs命令行模式,实现文本编辑与系统管理的无缝集成?-图1
(图片来源网络,侵删)

基本启动

emacs

这会启动一个图形界面的 Emacs 窗口,如果没有图形环境(例如在 SSH 连接的服务器上),它会启动一个终端(文本)模式的 Emacs。

启动并打开文件

emacs filename.txt
emacs /path/to/your/document.org

如果文件不存在,Emacs 会创建一个新文件。

启动并打开多个文件

emacs file1.txt file2.txt file3.txt

Emacs 会为每个文件创建一个缓冲区(Buffer)。

启动并跳转到指定行

这对于快速定位错误非常有用。

如何在Linux系统下高效使用Emacs命令行模式,实现文本编辑与系统管理的无缝集成?-图2
(图片来源网络,侵删)
emacs +100 filename.log

这会打开 filename.log 文件,并将光标定位在第 100 行。

启动并执行 Elisp 代码

emacs --eval "(message \"Hello from Emacs!\")"

这在脚本化或自动化 Emacs 任务时很有用。


基础编辑命令(核心操作)

Emacs 的核心是 CtrlMeta 键的组合。

  • Ctrl 键:通常简写为 C
  • Meta 键:通常指 Alt 键,简写为 M

光标移动

命令 作用 缩写
C-f 向前移动一个字符 forward
C-b 向后移动一个字符 backward
C-p 向上移动一行 previous
C-n 向下移动一行 next
M-f 向前移动一个单词 forward-word
M-b 向后移动一个单词 backward-word
C-a 移动到行首 beginning-of-line
C-e 移动到行尾 end-of-line
M-< 移动到文件开头
M-> 移动到文件结尾

文本编辑

命令 作用 缩写
C-d 删除光标后一个字符 delete
M-d 删除光标后一个单词 delete-word
DEL (或 Backspace) 删除光标前一个字符
M-DEL (或 C-Backspace) 删除光标前一个单词
C-k 从光标位置删除到行尾 kill-line
C-y 粘贴(Yank)上次删除的内容 yank
M-y C-y 之后按,可以循环粘贴更早的内容

撤销与重做

命令 作用
C-x u 撤销,可以连续按多次进行多次撤销
C-g 取消当前命令或输入

文件与缓冲区操作

这是 Emacs 日常使用中最频繁的操作。

如何在Linux系统下高效使用Emacs命令行模式,实现文本编辑与系统管理的无缝集成?-图3
(图片来源网络,侵删)

文件操作

命令 作用 缩写
C-x C-f 查找并打开文件 (Find File)
C-x C-s 保存当前文件 (Save File)
C-x C-w 将当前缓冲区另存为新文件 (Write File)
C-x C-v 替换当前文件(关闭旧文件,打开新文件)
C-x i 在光标位置插入另一个文件的内容 insert-file

缓冲区 操作

缓冲区是 Emacs 在内存中打开的文件副本,你可以同时打开多个文件,每个文件对应一个缓冲区。 | 命令 | 作用 | 缩写 | | :--- | :--- | :--- | | C-x C-b | 列出所有缓冲区 | list-buffers | | C-x b | 切换到指定缓冲区 (Switch Buffer) | switch-to-buffer | | C-x k | 关闭(杀死)当前缓冲区 (Kill Buffer) | | | C-x s | 保存多个修改过的缓冲区 | save-some-buffers |


搜索与替换

Emacs 提供了强大的搜索功能。

基本搜索

命令 作用
C-s 向前增量搜索 (Incremental Search)
C-r 向后增量搜索 (Reverse Incremental Search)

增量搜索的使用方法:

  1. C-s,状态栏会出现 I-search:
  2. 输入你想搜索的字符串,光标会实时跳到第一个匹配项。
  3. 继续按 C-s,跳到下一个匹配项。
  4. C-r,在当前匹配结果中反向查找。
  5. DELBackspace 删除搜索字符,可以向前查找上一个匹配项。
  6. EnterC-g 退出搜索模式。

查询替换

命令 作用
M-% 查询替换 (Query Replace)

查询替换的使用方法:

  1. M-%
  2. Emacs 会提示你输入要替换的字符串(Query replace:)。
  3. 输入后按 Enter
  4. 接着提示你输入替换成的字符串(Query replace [old] with [new]:)。
  5. 输入后按 Enter
  6. 之后 Emacs 会逐个询问如何处理每个匹配项:
    • y: 替换当前匹配项并继续。
    • n: 跳过当前匹配项并继续。
    • 替换剩余所有匹配项,不再询问。
    • (点): 替换当前匹配项并立即退出。
    • C-r: 进入递归编辑模式,可以临时进行其他编辑操作。

窗口与帧管理

Emacs 可以将屏幕分割成多个小窗口,方便同时查看多个文件。

命令 作用
C-x 2 垂直分割窗口 (Split Window Vertically)
C-x 3 水平分割窗口 (Split Window Horizontally)
C-x o 在窗口间切换光标 (Other Window)
C-x 0 关闭当前窗口 (Delete Window)
C-x 1 只保留当前窗口,关闭其他所有窗口 (Delete Other Windows)
C-x ^ 增大当前窗口高度
C-x { 减小当前窗口宽度
C-x } 增大当前窗口宽度

注:窗口是 Emacs 内部的概念,而“帧”(Frame)则对应于操作系统中的一个窗口。

命令 作用
C-x 5 2 创建一个新帧
C-x 5 o 在帧之间切换

退出 Emacs

命令 作用
C-x C-c 退出 Emacs,如果缓冲区有未保存的修改,会提示你保存。
C-x C-s 保存文件,但不会退出。

实用技巧与高级功能

获取帮助

命令 作用
C-h t 打开 Emacs 教程 (Emacs Tutorial),新手必看!
C-h k 查询一个按键的绑定功能 (Describe Key),按 C-h k 然后再按你想查询的键(如 C-f),Emacs 会告诉你 C-f 的功能。
C-h f 查询一个函数的功能 (Describe Function)。
C-h v 查询一个变量的值和说明 (Describe Variable)。

Dired (目录编辑器)

C-x C-ddired 命令可以打开一个目录,让你像在文件管理器里一样浏览、复制、重命名、删除文件和目录,这是 Emacs 的一个杀手级功能。

模式

Emacs 会根据文件类型自动切换“主模式”(Major Mode),.py 文件会进入 Python 模式,提供语法高亮、代码缩进等功能。

  • M-x + tab (按 Tab 键可以自动补全模式名称) 可以手动切换模式。
  • 每个主模式通常有自己的 C-c 前缀的快捷键。

状态栏

Emacs 窗口最下方是状态栏,显示了很多有用的信息:

  • 当前文件名。
  • 主模式名称(如 Emacs-Lisp)。
  • 缓冲区是否被修改( 表示已修改)。
  • 当前行号和列号。

功能类别 核心命令
启动 emacs, emacs filename, emacs +100 file
光标移动 C-f/b/p/n, C-a/e, M-f/b
编辑 C-d, M-d, C-k, C-y
文件操作 C-x C-f (打开), C-x C-s (保存), C-x C-w (另存)
缓冲区 C-x b (切换), C-x k (关闭), C-x C-b (列表)
搜索 C-s (向前), C-r (向后), M-% (替换)
窗口 C-x 2 (垂直分), C-x 3 (水平分), C-x o (切换)
退出 C-x C-c
帮助 C-h t (教程), C-h k (查询按键)

最重要的建议: 花 30 分钟把 C-h t (Emacs Tutorial) 过一遍,这是学习 Emacs 最高效的方式,Emacs 的学习曲线虽然陡峭,但一旦你掌握了它的操作逻辑,就会发现自己再也离不开它了,祝你好运!

分享:
扫描分享到社交APP
上一篇
下一篇