哪些软件包可用于模式编辑?


13

Emacs中有哪些软件包可用于模式编辑?您使用什么,为什么?

让我们尝试为每个答案发布一个软件包。我建议提及每个软件包的优点和缺点。


这是我对模式编辑的定义(找不到专门的Wikipeadia文章):

模态编辑 -文本编辑的样式,当用户通常在按键不引起其字符插入而通常在“正常模式”之间切换时,而对按键进行相应的文本操作则是在文本上执行各种操作,而在按键插入相应字符时进行“插入模式”。当然,可能还有更多模式。大多数现代编辑器都不是模态的。Vi(Vim)是模式文本编辑器的一个示例。


什么是“模式编辑”?
Lindydancer

@Lindydancer,我在问题中添加了尝试解释该概念的尝试。
Mark Karpov

Answers:


13

evil中,ê xtensible VI 大号艾尔为Emacs

除了可疑的名称之外,evil它是当前vim在Emacs中进行仿真的最新技术(就此而言,可能还有其他地方)。它支持其他Vim仿真程序包所规避的许多功能,包括:

  • vim 文字对象
  • vim 寄存器
  • vim 键盘宏
  • ex 命令

优点

  • 按键兼容性vim意味着您切换到没有Emacs的系统时,不会失去肌肉记忆。
  • 非常成熟且广泛使用(例如许多社区软件包)
    • vim已将许多软件包移植到evil
  • vim 样式语法是模块化的,非常适合用户扩展
  • evil 本身是非常可扩展的:创建自己的文本对象,运算符和动作!

缺点

  • 可能需要一些摆弄才能使其与其他软件包一起使用
    • 幸运的是,这evil使最常见的用例变得异常容易。
  • evil是一个非常复杂的系统。在邪恶的核心上进行黑客入侵可能变得相当复杂。
  • vim键绑定不一定在人体工程学上最佳。有时,将它们移植到其他系统时会感到有些武断。
  • 托管在BitBucket(Mercurial)上,您将可以做到这一点。

我发现Emacs可扩展vi层的缩写是邪恶的,有点不好。
命名

@Name不是我的主意,但是怎么回事?
PythonNut 2015年

从字典中:evil =非常不道德和恶毒,体现或与魔鬼的力量相关联,有害,极其不愉快,...
名称

5
@Name是为自己命名的人,我想您在命名事物时会喜欢使用幽默。:-)对于Evil,具有讽刺意味(请参阅en.wikipedia.org/wiki/Irony#Definitions)。我认为这是Emacs软件包有史以来最好的名称之一,因此将其列为优势!
tarsius

@PythonNut我认为使用Bitbucket的问题比使用Mercurial的问题小(实际上根本没有问题)。
tarsius

11

god-modehttps://github.com/chrisdone/god-mode),它使用标准的Emacs键绑定,但不需要按住修饰符。当启用上帝模式时,C-...绑定不需要修饰符,并且M-...绑定使用前缀而不是修饰符。

作为来自github页面的示例:

之前:Cp Ck Cn M- ^)Cj Cy Mr Cx zz M-2 Mg Mg Cx Cs

之后:pkng ^)jygr。。2个


1
请扩大您的答案,所以它不仅仅是一个链接。
Mark Karpov 2015年

@Stefan-我可以自由扩展您的答案。随意更改,只要您愿意。
glucas 2015年

glucas:谢谢!@Mark:对神模式一无所知,我无法轻易扩大答案。我发布了它,希望像glucas这样的人可以填补空白。
Stefan 2015年

6

添加我自己的,谢谢@Mark的鼓励。

Xah飞键

从多年的ergoemacs模式经验开始,专为emacs设计,目标是成为最有效的系统。关键选择是尽可能多地基于科学,它是基于关键频率和关键易按分数的统计数据。最常用的命令映射到最容易按下的键。从每周实验的3年中,还考虑了其​​他问题,例如分组和键绑定bigram。

有趣的地方:

  • 所有Cx命令均由2至3个单键顺序完成。在xah-fly-keys中,Cx从来没有必要。M-从来没有必要。
  • 不与任何GNU emacs的键冲突,因为它不绑定Ctrl或Meta(C-7,C-8除外,但不是必需的)。您可以在插入模式下打开xah-fly-keys,然后像平常一样使用GNU Emacs。
  • 还考虑了哪些命令集可带来最大的编辑效率。因此,该软件包使用了约80个自定义编辑命令。(例如,如果没有选择,复制将复制当前行。一个命令切换字母大小写,而不是GNU Emacs的大约6个变体的上/下/区域/无区域。)
  • 实现尽可能简单。没有宏,没有建议,没有复杂的键重映射,仅使用了两个钩子。(是好是坏?!)

缺点:

  • 就像第一次学习vi一样,您需要一个月的时间才能采用。
  • 不太知名。本月刚刚发布供公众使用。
  • 当前仅支持Dvorak布局。
  • 还没有方便的学习关键图。
  • 对于主要模式,您仍然需要使用Cc。(因此,您可以使用其他程序包(例如上帝模式或九头蛇)来解决此问题。)

我是作者,因此请注意,我可能会无意识地产生偏见。随时发表评论或纠正。


您有机会支持其他键盘布局吗?我知道ErgoEmacs可以。我可以尝试一下,但是对于随意的实验,切换到Dvorak的门槛太高了。
PythonNut

@PythonNut是,最高优先级。我希望在一周内。主要的事情是弄清楚我如何实现它。
Xah Lee

啊。很酷。出来的时候我会旋转的。
PythonNut

6

Modalka必须是模态编辑块中的最新孩子。github项目似乎已经存在了10天。我没有足够的时间来评论或评估,但是这里是这样描述的:

这是一个构建工具包,可帮助切换到Emacs中的模式编辑。该软件包的主要目标是使Emacs中的模式编辑尽可能自然和本机化。没有黑客,没有极端情况,没有仿真-只需按所需方式模态开始编辑即可。

该文档还比较和对比与其他常见模式解决方案,例如Modalka evilgod-modeboon等。


4

布恩

Boon是用于模式编辑的鲜为人知的软件包之一。它不模拟Vi(或Vim),但提供针对Colemak键盘布局优化的原始布局。

优势与设计原则

  • 首先是空间分配,然后是助记符:命令中键的分配优先基于键盘上键的位置。第二个问题是按键盖上的印刷内容。

  • 简单的手指滚动:常见的组合应该是左/右手交替或简单的单手滚动。

  • 使用主行和粗壮的手指来执行最常用的命令

  • 易于导航:许多命令都绑定到导航。这便于四处移动。由于移动是区域定义的两倍,因此使操作命令(操作员)更强大。

缺点

  • 您需要重新学习如何与编辑器进行交互,因为编辑基元的集合及其在键盘上的放置非常独特。

1
Boon并不真正在乎按键上的内容,而是强制要求按键为Colemak,这听起来有些奇怪。听起来应该与布局无关。
PythonNut

@PythonNut,我想人们需要以某种方式引用键:-)我认为完全有可能使其与其他布局一起使用。
Mark Karpov 2015年

Boon现在具有QWERTY和QWERTZ支持,请参阅github.com/jyp/boon#installation。我更新了答案以反映这一点。
raju-bitter

3

人体工程学还支持模态编辑。它不模仿vi,但对最常用的命令使用Alt键。例如,移动光标是Alt键加上右手倒T。(在QWERTY它是Alt+ jleftAlt+ l为右,Alt+ iupAlt+ kdown)。删除字符或单词是Alt用左手的home-row键。键的选择基于命令的频率和键的位置,以便于按下。

  • 要开始模式编辑,用户可以按f6
    • 一旦f6被按下时,最常用的键不再需要alt键组合。
    • 因此,在QWERTY上,jis leftjis rightiis upkdown)。
  • 模态命令模式通过按下退出returnf6escape

除了传统的模态范例外,还有一种准模态范例,它允许在不使用任何修饰符(例如上帝模式)的情况下实现任何C-xC-c键的组合。

  • 准模态开始与QWERTY键盘apps fC-c使用控制键按下并且QWERTY apps dC-x
  • 完成此键序列后,该apps键将更改假定被按下的修饰符的类型。
  • 调用命令后,ergoemacs将恢复编辑模式。
  • 在任何键序列中,您还可以更改按住的键的类型。只需apps再次按下该键即可。

除了更改命令键之外,ergoemacs-mode还允许您在键入命令时更改有关键序列的内容:

  • 您可以在按键序列的中间按来编辑prefix参数f2
  • 按下backspace可收回上次按下的键。
  • Apps 允许您在任何键序列期间更改按住的键。

ergoemacs-mode还尝试尊重该模式对基本键所做的任何事情。例如,如果org-mode为定义了特殊键next-line,则ergoemacs 在处于org-mode时将此命令用于Alt+ k

优点:

  • ELPA中GNU Emacs的一部分。
  • 开箱即用地支持“通用” Windows / Linux密钥。例如,打开(C-o),关闭(C-w),选择所有(C-a),复制(C-c),剪切(C-x),粘贴(C-v)等。
  • 相当受欢迎。
  • 支持许多布局,包括Qwerty,dvorak,colemak,bepo和许多其他国际布局,这些布局可以调整键以确保它们位于主行上(QWERTY中的Mi将是colemak中的Mu)。
  • 通过描述主题在emacs中显示键盘布局的图像。
  • 通过创建主题,可以通过扩展系统自定义键。
  • 您可以设置任何任意的模式键盘映射(尚未记录)。

缺点:

  • 稳定在启动时很慢。
    • 在不稳定的主服务器中,第一次启动很慢(最小设置需要5秒左右)(我的启动需要20秒左右)
    • 第二次第二次启动要快得多(对于我的复杂设置,这是〜4秒)。
    • 这是因为ergoemacs-mode正在更改并缓存emacs中的每个活动键盘映射。在第二次启动时,将保存这些设置。
  • 复杂的代码。

参见https://github.com/ergoemacs/ergoemacs-mode


2

另一个半模态选项是Hydra:

https://github.com/abo-abo/hydra

根据网站

想象一下,您已经在配置中绑定了Cc j和Cc k。您想以某些(任意)顺序调用Cc j和Cc k。九头蛇允许您:

  • 以按Cc jjkk3j5k等同于按Cc j Cc j Cc k Cc k M-3 Cc j M-5 Cc k的方式绑定功能。除j或k以外的任何键都将退出此状态。

  • 为这组功能分配一个自定义提示,以便在按Cc键后立即知道可以跟上j或k。

我没有用过,但看起来很有趣。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.