猫态编辑:Meow

如果不是哪一天突然想把这个 port 到其它的编辑器了,就是算正式的扎根在 Emacs 了。

重了重构代码外,还完成了第一版正式的文档,中文和英文的。

还更新了一下 Logo, 之前总有人说 Meow 的 Logo 有种摩托罗拉的感觉,很烦。


添加了文档中对于不同键盘布局的示例,包括 Qwerty, Dvorak 和 DVP 布局。


Peek 2020-12-28 00-40


添加了 cheatsheet 功能,会展示使用者实际绑定的按键。如图下所示:


添加了 KEYPAD 下显示 keymap 的功能。


利用 Kmacro 的多行编辑,终于开心的放弃了 multiple-cursors 和 iedit.

行选后激活,结束时应用到多行

meow-kmacro

搜索并应用

meow-kmacro2

29 个赞

cool!!

绝对的造轮子典范! :+1: :+1: :+1:

把 Emacs 的编辑的哲学,从里子到面子全部重新实现了一遍,我考虑也用 meow 整一套自己的快捷键方案,彻底释放双手, 不过就是得规划规划。

3 个赞

试了一下,非常好用,感谢大神开发分享

我现在的思路和狗哥有点像,不过我在基础模式下去掉了基本移动,四个方向键全是选词。在此基础上增加了个选择模式,执行类似于你的 meow-append , meow-line , meow-reverse 等命令时,就会进入这个模式,这个模式专注于选择,所以有基础移动也有按词、行移动,只要 mark 消失或执行了其他命令,这个模式就会自动退出,而在这模式下执行的命令也会尊重选中的内容(比如 isearch 等),与此相对,普通模式下即使有 mark,也会在执行命令前取消 mark (复制粘贴等除外)。

另外关于 Keypad 模式,当时和你聊完后,我就把 cx 在无 mark 的情况下绑上了 C-cC-x,但后来发现我这些键用的实在太少,就把 C-c C-cC-c C-kC-c C-e 等常用命令单独绑到了 leader key 上了,发现也基本够用了。

MOTION 模式赞的,我现在是进入这类 mode 直接用默认,可以学习你的用 SPC SPC 做普通的 SPC

感觉好棒! evil模式其实我自己主要用它额外带来的模式和leader-key, 其他的功能用的很少, 感觉可以用meow来替换试一下!

但有个问题, 比如像是在magit的buffer中, "P"用来引起push, 那么为了能用小写替代, 这时候就只有把这个指令重新映射了?

狗哥是真的勤奋和高效啊。半天就更新了文档。 赞。

用了一段时间meow后的感触。

Meow应该是目前最好最科学的Emacs编辑交互插件

对比

在用了 Evil,xah-fly-keys,emcas原生按键方案后。有以下体会。

免责声明 是个人体验的感受,如若说的不准确,或者有偏差,欢迎理性纠正。

只说问题,各自的优点应该都有体会。

  • Emacs 原生:直接的问题就是有些按键非常难按,总容易导致RSI问题。
  • Evil 略显沉重,特别是在window上,有卡顿的感觉。案件逻辑组合好多,快速编辑时, 有时感觉手指跟不上。
  • xah-fly-keys 灵活性不够,可扩展性不强。

理念

  • 移动即选择
  • 大道至简

优点

  • 小拇指RSI 的问题,meow是模式编辑,设定好自己合理的按键绑定,不会频繁劳累小拇指了。
  • Keypad mode 可以让Emacs或者其他插件默认的按键,舒畅使用,无需太多痛苦重新绑定。
  • 提供基础的命令,根据自己的按键偏好和设计逻辑,绑定一套属于自己的按键方案。 如果你愿意,可以绑定和Evil类似的按键方案
  • inner-of-thing bound-of-thing 和Evil 的objet 差不多。感觉更科学,先选选择 再执行。 而Evil 是先指令再选择,少了直接所见确认的过程,要配合插件才高亮闪下选择的object。
  • 我认为很强的一个功能 就是按键 fallback 功能,这样一个键绑定,如果本身的命令条件不成立,可以fallback到一个定义的命令。这样特别是fallback到 Keypad mode, 直接让默认按键少按两个键。 比如将c 键fallback后, C-c C-o 我直接 按 c o 就行了。舒爽!!!
  • motion mode 可以让你在特殊模式下直接用原生的Emacs 按键。 比如 Dired.
  • selection expand 从没有这么舒爽,理解他,用他,然后你会爱上他的。
  • 选择 reverse 配合其他命令,也很不错。
  • native-argument 配合命令可以改变命令行为。

还有其他功能值得你去探索,用它,感受它,改善它。打造属于自己的Emacs交互体验。 十分推荐。

配置建议

  • (delete-selection-mode -1) 关闭 delete-selection-mode.

最后

感谢作者狗(够?)好看,狗哥 :heart:

9 个赞

之前可能理解错了,我觉得没有必要把大写 P 换到小写 P。

----------原回答----------

Magit 用大写 P 做 push, 小写 p 原本是移动。如果是 n/p 移动的话不用动,如果你要用 j/k 移动的话,那么把原本的 j 就换到 SPC j ,像例子中那样。

在 Meow 里面这个东西是全局换,也就是整个 MOTION 模式下都做替换,不区分具体在哪个 special mode。

NORMAL模式还有吗,如果在选择模式的话,会有一套独立的按键吗?

我认为最很强的一个功能 就是按键 fallback 功能,这样一个键绑定,如果本身的命令条件不成立,可以fallback到一个定义的命令。这样特别是fallback到 Keypad mode, 直接让默认按键少按两个键。 比如将c 键fallback后, C-c C-o 我直接 按 c o 就行了。舒爽!!!

这就去把这个功能加上 :smirk_cat:

1 个赞

学习下,期待狗哥继续出教程啊

得把最近写的东西补点文档,还得赶赶工作的事,最近工作比较忙。然后就可以继续了。

没看懂keypad的说明. "C-s"要怎么在keypad中激活? C-c M-n n SPC c c m n SPC n 或 SPC c c m n n (无歧义时) 这个例子也没太看懂, 没什么需要按两个c?

不好意思,我应该打错了,不需要两个 c。 :no_mouth:

默认只会在SPC c, SPC x, SPC h时激活 KEYPAD, KEYPAD 是为了执行一个命令,不是持续在 KEYPAD 里面执行各种命令。

激活 keypad 的命令叫 meow-keypad-start ,任何键绑了这个都可以激活。一般都是绑在 leader keymap 里面。

比如我想用SPC s来激活绑定在C-s上的swiper, 应该怎么定义?

对于数量少的,优先级高的命令,使用 Leader。

(meow-leader-define-key
  '("s" . swiper)
  '("d" . dired)
  '("f" . find-file))

对于好用的模式编辑,Leader 还是必要的,但是太重度的 Leader 是个维护上的负担。

引入KEYPAD 就是为了让各种插件和 Emacs 自带快捷键可以直接用。Leader 中的 x, c, h 默认就是 meow-keypad-start.

在 meow-keymap.el 里面有每个 keymap 的默认值,Meow 默认的按键绑定非常精简,所以应该算的上一目了然了。

还有一个问题, 如果我定义了一组以C-p开始的keybinding, 要怎么设置, 才能在按Spc p时可以进入keypad模式?

我感觉C-p C-f C-f这种设定方式在meow中比用leader-key设置"pff"要好很多.

是的,像这样序列的按键就是用 keypad 要好一些。

(meow-leader-define-key
  '("p" . meow-keypad-start))

不过似乎没有哪个插件是以 C-p 开始的?Meow 默认绑定好的 h, x, c 都是 Emacs 自己的,还有 m(M-) 和 g(C-M-) 是因为 C-m 是回车,C-g 是 keyboard quit,正好有这么两个位置。

哈哈, 我是想绑find-file-in-project的键位.

顺便把我evil-leader的绑键想个办法迁移过来.