Sniem: Emacs 新编辑模式

前言

一个月以前,我创建了一个新项目: sniem,意为: Simple united editing method
刚开始我对它的期望是: 将 evil 的操作方式和狗哥写的 meow 的亮点融合起来。后来,在1月24日,初始版本发布,我将其定位改变了: 全新操作方式 + meow 部分亮点 + 其它十分便利的功能。

大概在前几天,sniem 差不多成熟了,我做了一期关于 sniem 的视频。我犹豫是否在社区发条帖子,在翻看 commit log 时发现离首次提交刚好一个月了,因此便还是发了。

介绍

首先说说所谓的全新操作方式,就是围绕一个概念: last-point(以下简称为LP)。一般情况下,每一次移动的移动前那一个位置会被设置为 LP 。几乎每一个 operation 都有一个针对 LP 的操作(除了sniem-paste)。

然后是 其它十分便利的功能,这里举两个例子。

  1. sniem-digit-argument-or-fn 这个功能简单来说就是 1: 一般情况下执行之后,键盘中间那行将代替数字键和负号(sniem 支持主流的4种键盘布局),以此执行 digit-argument,回车即输入完毕;2: 执行它后可按下固定按键,以执行特殊操作(按键在README有写,链接在最后)。也可先以用中间那行输入数字,再按特殊操作的按键,以对其使用 digit-argument
  2. sniem-object-catch 源于我用evil 时写的插件,后将其移植了过来,并有很大改进。这个功能用来智能选中 pair,然后可对其进行操作,比如写Elisp时用来分辨括号,或者结合sniem-pair 对其进行添加或修改。

链接

最后,sniem才刚刚诞生一个月,一些功能必然比不上其它编辑模式,但我会一直将其完善下去,将其打造为一个一体化的编辑模式。更新方面,目前处于假期,我一般每天都可能有提交,也快上学了,我们学校是住宿制,因此上学期间周末可能有提交。

10 个赞

下一步计划是加入 sniem-mark-jump 功能,最近看到了关于这个的帖子,很久之前在自己配置里实现了一下,不过十分简陋,明天开始写。

视频看的有点云里雾里啊,能不能加个解说详细讲讲 :see_no_evil:

考不考虑做一个通用的 cheatsheet 包,支持 jis, ios, kr 等物理布局?最近收到这么个 issue 。

我的麦克风有问题,目前还没找到调节的合适办法。可以先看README,上面写得也还算详细了

想法还是有的,不过我得先去了解了解这方面的东西

近几天我会出一系列视频来介绍

昨天所说的 sniem-mark-jump,已经提交了

1 个赞

有讲解的已经发布: Emacs全新编辑模式: Sniem 详细讲解_哔哩哔哩_bilibili

恩恩看完了,last-point 和 object-catch 还挺好玩的,不过我感觉总操作数似乎有点多啊。你其实可以列个表,和其他系统对比下常见操作的按键数。

特殊操作基本都列出了,其它的就都是一般操作,可以在 cheatsheet 里查看

多也正常,毕竟是一体化编辑模式。

刚刚修复了一下 sniem-mark-jump,解决了注释里有其它 face 时出错

2 个赞

最新提交为 sniem-pair 加入了删除功能,(一直在用 paredit 所以忘记了这个功能,直到写 Org 的时候才注意到这个功能)。

最近看到了一个 expand-region 项目,可用于在各个语言快速选中代码语句主体, Sniem 已经有 sniem-object-catch 的支持,因此实现也比较容易,下一个版本将针对这个功能加入 sniem-expand-region

最近加了不少功能,有时间会录一个介绍新功能的视频,最近应该时不会发,比较忙。

看了视频,虽然不知道在干嘛,还是给你点赞

不错啊这个!虽然基本没看懂…

这个是有讲解的

今天的所有提交内容:完善了具有相同字符的 pair 在像 comment 这样 face 相同的内容里的选取。

最新提交,主要内容:完善了 sniem-object-catch 选中内容中反斜杠和多种 face 时的出错;加入了一个简单的 sniem-expand-region-string;为 sniem-pair 添加了添加前缀,可先输入 a 后输入 pair;修复了 sniem-object-catch-prefix-string-p 的判断
明天开学,近期推送会减少。

最新提交,增加了 EXPAND 模式,用于更加舒适地扩展选择。

1 个赞

最新提交,目前看来是最终版了,以后都是小修补。

更新内容:

  1. sniem-replace-word 加入了换位功能,现在被 sniem-mark-content mark 的内容不仅可以用来当做记号,还可以用来直接替换了。
  2. sniem-object-catch 替换了指定模式 pair 的实现方式,不再使用 hook 而换为直接将其放入全局 pair 的变量。
(sniem-object-catch-mode-defalist org-mode
  ("~" . "~")
  ("=" . "="))
(insert (format "\n'%S" sniem-object-catch-global-symbol-alist))
'((org-mode ("=" . "=") ("~" . "~")) (emacs-lisp-mode ("'" . "")) ("\"" . "\"") ("'" . "'") ("[" . "]") ("<" . ">") ("(" . ")") ("{" . "}"))
  1. 加入了 sniem-search 命令,用于快捷搜索之前用 sniem-next-word / sniem-prev-word 搜索过的内容,适用于知道目标文本或要重复搜索的情况[1]。 若搜索的内容是第一个,将会在行尾显示 [FIRST],最后一个显示 [END],只有一个结果显示 [ONLY][2]

注1:目前有很多强大方便的模糊搜索插件,我比起它也更经常使用 swiper,它只是为了在一些时候更方便所创。
注2:我觉得这个情况是最多的,一般搜索结果只想知道是否为第一个、最后一个和唯一一个。

1 个赞