gpt4 book ai didi

emacs - 理解 Emacs 完成模式选择

转载 作者:行者123 更新时间:2023-12-03 10:16:27 24 4
gpt4 key购买 nike

似乎有许多替代的 Emacs 自动完成机制。如果没有详尽的搜索,就会想到以下内容:ido、自动完成、icicles、缓冲区内完成、迷你缓冲区完成和开箱即用的标准完成。然后是代码完成。很多。而且很大程度上取决于语言。让一个或三个 Emacs 专家总结主要参与者在代码和非代码自动完成方面的好处将非常有用。这就是 Stack Overflow,不言而喻,最好确定最适合 Emacs 的类似 IDE 机制的自动完成模式。

更新 : 我刚发现the Emacs Wiki completion page这放大了我的基本问题:在所有这些选择中,什么是好的,什么不太好,如果你只能玩 2-3,你会推荐哪个?

最佳答案

Icicles --

大多数情况下,Icicles 大约是 小缓冲区 完成。在少数情况下,它为缓冲区内(例如代码)完成提供了一些东西,但主要是关于 minibuffer 完成。

当大多数人想到 minibuffer 完成时,他们会想到文件名完成、缓冲区名完成和命令名完成。但还有很多。

作为一个 Emacs-Lisp 程序员,你可以在任何你想给用户交互选择的地方使用完成。这很一般!

完成实际上是关于定义集合的模式匹配,然后您可以对其进行操作。

大多数人认为 minibuffer 补全的唯一目的是选择一个名称(文件、缓冲区、命令、变量……)。但是完成的力量实际上是以不同的方式过滤并可能对完整的文件名、缓冲区名等进行排序,然后让用户对结果集(不一定是单个对象)做一些事情。

就是这样 冰柱 是关于:让您使用模式匹配动态(增量)定义集合,然后对选定的成员或这些集合的所有成员进行操作。

这不是 Ido 或其他完成包的目标,Helm (Anything) 可能除外。

不像 Helm (Anything) ,它将对象名称优先于对象类型和操作作为其起点,在 中冰柱 您通常调用命令对给定类型的一个或多个对象(例如缓冲区)执行某些操作,然后通常通过名称匹配来缩小这些对象的集合。 中经常出现这种情况。冰柱 您可以在同一命令中以多种但相关的方式对这些对象进行操作。

在 Helm (Anything) 中,通常您的输入首先通过对象名称与所有类型的对象的整个世界进行匹配,然后您缩小范围以选择一些要执行的操作。

最后,请记住,各种完成方法中的每一种都为最终用户提供了一些东西(例如命令),也为程序员提供了一些东西(例如完成功能)。

如果您正在执行代码完成,那么您通常只想完成名称。代码完成的主要有趣之处在于确定合适的候选者是什么。为此,文本(例如代码)上下文通常是最重要的。为了提供明智的选择,完成功能需要分析上下文(代码),包括任何包含的上下文(例如项目代码)。

另一方面,Minibuffer 完成可用于任何类型的选择和操作,包括具有多个操作的多项选择。在这里,所有部分都很有趣:提供什么候选人,你可以用他们做什么,等等。

不知道这是否有帮助,但无论如何这是我的看法。

关于emacs - 理解 Emacs 完成模式选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2100166/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com