#text #editor #text-editor #terminal

应用 mfte

MFTE,无魔法文本编辑器

9个版本

使用旧的Rust 2015

0.3.0 2017年11月27日
0.2.4 2017年10月28日
0.2.1 2017年9月3日
0.1.3 2017年8月26日

#217文本编辑器

28 每月下载量

MIT 协议

75KB
2K SLoC

MFTE,无魔法文本编辑器

力量平庸,责任微小

Travis AppVeyor

因为我什么都做不好,所以我写了一个文本编辑器。Vim和Emacs太复杂了。Nano几乎可以做我想做的所有事情。(我对Electron没有意识形态上的不满,但我认为用它来作为文本编辑器很愚蠢。)

发音为“mifty”(与“nifty”押韵)。

在Windows上运行最佳,因为我就是用Windows。保证在Mac OS和Linux上编译;可能无法实现全部功能。

配置

出于不重复造轮子的考虑,MFTE使用EditorConfig来处理文件级别的设置,如缩进宽度和行结束符。

出于使我自己的懒惰得以实现,并不是所有功能都得到了实现。缩进大小是我唯一关心的不同值,所以我测试了2和4,它们都可以正常工作。其他数值也应该可以正常工作。

像EOF行为和两个布尔选项这样的简单功能应该会按照设置的方式工作,但我还没有彻底测试它们。

将缩进设置为制表符会破坏一切。(加载设置为制表符缩进的文件也会破坏一切,想想看。这可能不是一件好事。)

您不能更改字符集。它是UTF-8。这是一个特性。

指导开发原则

  • 不要做魔法。自动为您整个文件缩进确实很酷,但记住如何做这件事会占用您大脑中本可以用来做其他事情的空余空间,比如如何缩进代码。
  • 不要成为模式化的。输入文本应该始终(在合理范围内)实际上插入文本。
  • 不要用其他东西替换箭头键。这是愚蠢的。
  • 不要包含LISP。这是一个文本编辑器,笨蛋。
  • 不要仅仅为了保存就要求四个单独的按键。<Esc>:w<ret>是荒谬的。
  • 见鬼,永远不要让我去找我的<Esc>键,就像,永远。
  • 如果连pianobar.el这样的东西都能为MFTE编写,那么我就做了件可怕的事情。是的,Emacs能做那件事确实很酷,但你为什么不能在Emacs之外运行pianobar呢?为什么需要将其集成到Emacs中?这同样适用于其他80%的愚蠢的Emacs技巧。
  • 不要有不合逻辑的默认设置。
  • 让我能够撤销!我喜欢Nano,但我不喜欢Nano的这个功能。
  • 不要重新实现复制和粘贴。我的操作系统已经有了。

功能强大的文本编辑器往往会使缩进变得过于复杂。Nano编辑器并没有做任何特别聪明的事情。规则很简单:假设缩进级别与前一行没有变化,并使添加或删除一个级别变得容易。装饰性代码块注释、Markdown列表和其他非纯空格的行前缀也计入。

操作系统兼容性

Windows具有获取每次一个按键的实际API和获取所有修饰键的API,因此MFTE可以接收(例如)Ctrl+Tab或Shift+Down。如果我想让Ctrl+Shift+S与Ctrl+S不同,这也是可以的。

与此同时,在UNIX上,一切都很糟糕。Tab键只是Ctrl+I,因此Ctrl+Tab甚至不可能。向下键是Esc [ B,因此Shift+Down显然是Esc [ 2 ; 1 B。(显然,这并没有我预期得那么复杂。)

依赖关系

约4.5MB
约96K SLoC