5 个可用于改进 Emacs 的隐藏功能

Emacs 是一个很棒的工具,使用正确的第三方包,您可以在其中创建自己的环境。 诸如窗口生成和终端仿真之类的功能只是 Emacs 中对普通用户隐藏的部分。 本文旨在阐明其中的一些内容,以便让您充分利用 Emacs 安装。

内容

1. 产生一个新窗口

Emacs 中最有用的特性之一是 拆分窗口的能力. 使用 Ctrl + x, 2 或 Ctrl + x, 3,您可以轻松地水平或垂直复制当前缓冲区。 如果您正在处理同一文件的不同部分,这将特别有用。

知道了这一点,您还可以使用此 Ctrl + x 范例来拆分新文件的窗口。 默认情况下,普通的 Emacs 命令会接管您当前所在的窗口。 为了 example,如果您按 Ctrl + x, f 并打开一个文件,该文件将占据整个屏幕。

但是,通过按 Ctrl + x,4 后跟 f。 您可以指示 Emacs 在单独的缓冲区中打开该文件。 如果您想检查新文件但又想保留当前正在处理的缓冲区,这将非常有用。

5 Emacs Hacks 18 切换到新窗口

此外,您还可以使用它来切换到 Emacs 会话中当前打开的缓冲区。 为此,您可以按 Ctrl + x, 4 然后 b 来指示 Emacs 打开命令缓冲区。 反过来,这会列出会话中所有当前打开的缓冲区。

5 Emacs Hacks 03 切换到缓冲窗口

2.终端仿真器

默认情况下,Emacs 带有两个内置的 shell。 第一个是用 Emacs Lisp 编写的本机命令解释器,称为“eshell”。 它是一个纯文本 shell,可用于直接从 Emacs 运行 UNIX 命令。

作为纯文本,您还可以修改 eshell 中的任何命令输出,类似于任何 Emacs 文本缓冲区。 如果您在调试会话中并且想要在编译错误之间做笔记,这会很有用。

5 Emacs 黑客 05 Eshell

由于 eshell 的性质,它不能运行任何复杂的终端 UI (TUI) 程序。 因为 Emacs 还附带了术语,一个 VT100 终端 模拟器。

与常规 Linux 终端类似,term 模拟 VT100 的所有功能,包括其转义序列。 这意味着您可以在 Emacs 中运行任何 TUI 应用程序。 为了 example,我目前正在通过学​​期在 Emacs 中运行 vim。

5 Emacs Hacks 06 Emacs 中的 Vim

这样,您可以通过按 Alt + x 来运行 eshell 和 term。 这将调出 Emacs 命令缓冲区。 从那里,您可以输入 eshell 加载文本终端,或者您可以键入 term 加载 VT100 仿真器。

需要注意的重要一点是,该术语还具有有限的“纯文本”模式,您可以通过按 Control + c、j 访问该模式。

5 Emacs Hacks 07 终端线路模式1

这会将当前术语会话转换为“行模式”,您可以在其中轻松地在命令提示符之间复制和粘贴命令。 从那里,您可以通过按 Ctrl + c、k 返回到常规终端模式。

3. 在 Emacs 中访问远程文件

Emacs 中另一个出色的内置程序是 透明远程文件访问,多协议 (流浪汉)。 这是一个简单的程序,允许您通过 Emacs 中的任何协议无缝访问任何文件。

5 Emacs Hacks 08 示例 Tramp

它通过使用 ssh、rlogin 和 su 等帮助程序将用户连接到远程计算机来工作。 从那里,TRAMP 将远程计算机的文件安装到用户的本地计算机上。 这反过来又使这些文件看起来好像它们是本地的。

知道了这一点,您可以通过按 Ctrl + x、f 和 Ctrl + Backspace 来使用 TRAMP 来清除文件提示。 从那里,您需要输入特定的路径格式来告诉 Emacs 使用 TRAMP:

为了 example,我输入了以下 TRAMP 路径以通过 SSH 连接到我的文件服务器:

您还可以使用 TRAMP 在 Emacs 中编辑特权文件。 如果您需要快速编辑系统文件并且不想使用特权编辑器,这将非常有用。 这样做还可以降低安全问题的风险,因为 TRAMP 为特权文件创建了一个沙箱。

要通过 TRAMP 访问特权文件,您需要使用 su 作为您的协议:

在这个 example,我正在通过 TRAMP 编辑我的 Yggdrasil 配置文件。 由于我只在本地访问该文件,因此无需提供地址 su.

一旦我按下 Enter, TRAMP 询问我的用户密码。 之后,文件加载到 Emacs 缓冲区中,就好像它只是一个非特权文件一样。

5 Emacs Hacks 09 Emacs 中的特权文件

默认的 Emacs 搜索功能 比较笨重。 您可以按 Ctrl + S 向前搜索,按 Ctrl + R 向后搜索。 但是,这种形式的搜索严格限于匹配特定字符串。

这意味着您在搜索框中键入的任何内容都将完全匹配,包括空格。 在大多数情况下,这不是问题,因为大多数文本搜索仅包含单个单词和短语。

5 Emacs Hacks 10 搜索示例

尽管如此,在某些情况下您可能希望 Emacs 进行模糊搜索。 这是一种文本搜索,仅匹配多个字符串的一小部分。

为了 example,使用默认的 Emacs 搜索,仅通过在搜索框中提供“he ld”是不可能搜索短语“hello world”的。

5 Emacs Hacks 11 常规搜索示例

为此,您需要将以下 Lisp 代码添加到您的 init.el 文件中:

  • 第一个功能, search-whitespace-regexp 使用文本搜索时替换任何字符 (.*) 的空白字符。
  • 第二个功能, isearch-lax-whitespace 搜索单个空格时启用多个空格匹配。 将此功能与第一个功能结合使用可以进行模糊搜索。
  • 最后,第三个功能, isearch-regexp-lax-whitespace 确保您只需要使用单个空格字符来匹配创建模糊搜索。

知道了这一点,您现在可以重新加载您的 Emacs 客户端并测试模糊搜索是否有效。 就我而言,我只需输入“he ld”就可以搜索“hello world”这个短语。

5 Emacs Hacks 12 模糊搜索示例

5. 编辑你的 Dired 缓冲区

德雷德 是 Emacs 的默认文件管理器。 从本质上讲,它允许您轻松浏览计算机的文件系统并直接将任何文件打开到 Emacs 缓冲区。 您可以通过按 Ctrl + x、d 或 Ctrl + x、f 轻松访问 Dired。

5 Emacs Hacks 13 Dired 示例

然而,Dired 的主要问题之一是修改其缓冲区中的任何文件都很棘手。 为了 example如果你想在 Dired 中重命名一个文件,你需要做两件事:

  • 首先,您需要通过选择文件并按 M 来标记要编辑的文件。
  • 从那里,您需要然后按 Shift + R 切换重命名并为您的文件提供一个新名称。
5 Emacs Hacks 14 普通 Dired 重命名

虽然以这种方式重命名文件足以满足基本用途,但这样做来修改多个文件可能是一个挑战。

为了解决这个问题,Emacs 还提供了将 Dired 缓冲区直接编辑为文本的能力。 这将使您不仅可以重命名多个文件,还可以修改它们的权限位。

为此,您可以按 Ctrl + x、Ctrl + q。 这将启用“可编辑 Dired”模式。 从这里,您现在可以编辑 Dired 缓冲区,一旦保存,这些更改将应用​​于您的文件。

为了 example, 如果要重命名多个文件,只需键入当前文件名并编写新文件名即可。 完成后,只需按 Ctrl + C、Ctrl + C 保存更改,这些文件将被重命名。

5 Emacs Hacks 15 可编辑 Dired

使用 Dired 更改文件权限

如上所述,您可以在 Editable Dired 中做的另一件事是更新文件的权限设置。 为此,您需要将以下行添加到 init.el 文件中:

5 Emacs Hacks 16 初始化 El 配置

完成后,您现在可以直接从 Editable Dired 编辑文件的权限位。 为了 example,考虑以下文件:

文本的第一列表示该文件对我具有读写权限(rw-)。 此外,它也只有其他任何人的读取权限(r-r-)。

5 Emacs 破解 17 Dired 权限位

为了改变这一点,我选择了这一列文本并将 W 按到其他位以允许其他人编辑此文件:

另一方面,要撤消你可以按 – 到任何权限位,它将清除该字段的权限:

就是这样,您现在知道了默认 Emacs 中的 5 个隐藏功能,您可以使用它们来改善您的编辑体验!

经常问的问题

1. 是否可以为其他 Emacs 包创建一个新窗口?

可悲的是没有。 Ctrl + x, 4 命令仅适用于打开类似于 Ctrl + x, f 的新文件和打开类似于 Ctrl + x, b 的缓冲区。

解决此限制的一种方法是使用 Alt + x 正常打开包。 从那里,您可以通过按 Ctrl + x、4、b 来恢复之前的缓冲区。

2. 我可以为 VT100 Emulator 使用不同的外壳吗?

是的! 当您使用 Alt + x 运行 term 命令时,Emacs 会提示您输入要使用的 shell。 默认情况下,它将为您的系统添加默认外壳。 这意味着如果您的默认 shell 是 bashEmacs 会提供“/bin/bash”在这个提示中。

为了使用不同的 shell,您需要将此值替换为您要使用的 shell 的路径。 为了 example如果你想在术语中使用 ksh 你需要写 /bin/ksh 当 term 提示您输入要使用的终端时。

3. 我可以撤消对 Dired 缓冲区的更改吗?

是和不是。 您可以通过按 Ctrl + c、ESC 来撤消您在 Editable Dired 中所做的所有更改。 但是,这仅在您尚未将更改保存到磁盘时才有效。

一旦您按下 Ctrl + C、Ctrl + C,Emacs 将写入您所做的所有更改。 到那时,撤消这些的唯一方法是再次手动编辑文件。

图片来源: 不飞溅

订阅我们的新闻!

我们最新的教程直接发送到您的收件箱

注册所有时事通讯。 注册即表示您同意我们的隐私政策并且欧洲用户同意数据传输政策。 我们不会共享您的数据,您可以随时取消订阅。 订阅