视频说明
从第25分钟开始。
一个完整的适用于 Dvorak 布局的模式编辑,在自己的配置中存在了很长时间,花了点时间抽出成package。一直以来有大大小小的调整,和各种依赖,现在去掉了多余的依赖,方案也基本确定下来了。
项目地址
主要的几个特点(方向):
- 按命令名称对应到键盘的布局,除了单键的位置,也考虑常见组合的顺手。
- 针对 special-mode 的 motion state,几乎没有按键影响,仅仅是加上了 leader 和处理了 esc
- (借鉴 kakoune)移动和选择命令结合,基本不需要手动激活 region。
- 对于基础 built-in 的功能调用使用 kbd macro,这样增强功能的插件可以不需要任何兼容配置。
- keypad state 可以用来在不按修饰键的情况下调用 C-x 和 C-c 下的快捷键。
- 实现依赖 multiple-cursors, 并考虑兼容性。
PS:适用于 Dvorak, Colemak, Qwerty 和 Programmer Dvorak
Cheatsheet
有 qwerty, colemak, dvorak, programmer dvorak 四种,个别键位的调整避免别手的情况。整体上还是以命令名来排列。
加了个小的教程功能,clone 项目下来,make test 就可以直接体验效果了。
这会自动开一个 emacs -Q 的实例,启动 meow,然后打开教程的临时 buffer。
8 个赞
我打算录个视频说一下,大概要晚上搞一个。(主要是针对 Emacs 这个情况下)
因为自用体验实在是很好,即便抛开方案本身,里面的很多思路也是很实用的。
相比于视频,我加了个教程文档,感觉可能更有用一些。
看一楼我的更新。
视频没有录好,明天重来了只能。
Weiss
7
这有点厉害啊,让我想起了第一次接触 emacs 的情景,哈哈哈。
更新了视频的说明。录的不好,但是应该能看出来效果。
实在没有什么办法命令比较好的放到 Qwerty 上面,但是似乎可以直接用在 Colemak 上面,而且出乎意料的有不错的布局。
大概因为 Dvorak 和 Colemak 都是把常用的一排按键放在了中间的缘故。
在 README 中更新了 Colemak 的样子。
hek14
11
关于模式编辑吧, 因为我的经历是从vim转到emacs(相信应该有不少人当时抱着去隔壁看看的心理入了坑). 但是可耻的是, 我始终没有忘记vim的好, 时常还会回去看看那边的进展, 偶尔emacs卡顿的时候我就会打开vim体验一下丝滑的感觉…扯远了. 一直用evil-mode的原因是不想忘记vim那套模式编辑(虽然显然它不是最 ergonomic 的布局), 这样即使偶尔打开vim或者以后转回vim不会有太大的代价.
我曾经也是个 Vim 用户,所以刚换到 emacs 来之后也是用的 evil。
最开始的时候是从 spacemacs 入的坑。
那个时候的 spacemacs 的 bug 真的是非常多,而且 evil 的性能也很不好。因为对 emacs 的了解也少,所以又常常重装 package,经常装出各种各样的问题。
spacemacs 有很多 contributor ,我觉得一个个体是做不了大事的,所以不可以靠仅一个人就搞好一个 spacemacs,但是一群人的话却又很难做好小事,很难处理好细节。spacemacs 给我的感觉就是很全,第一反应很 cool,但是一旦用起来,就感觉摇摇欲坠的样子。
加上 evil 本身就是硬搬 Vim 的一套到 Emacs 里面,真正好用(甚至按我的感觉只能说可用)的 evil 是需要大量各种兼容包和 Hack 才能运作的比较好的。在我还用 evil 的时候,连 paredit 之类的都没有办法很好的集成起来,evil-cleverparens 好多 bug, 也没有 lispy + evil 的库。各种 package 只要没有人写包兼容,就要自己搞一堆按键绑定,处理一堆的边界情况。
做自己的模式编辑,并不是说自己一个人就可以搞好所有的边界情况和兼容的问题。当你退一步把从 Emacs 中使用 Vim 的需求,变成在 Emacs 使用模式编辑(以获得模式上的便利和优点)的需求。一下就可以从更开阔的角度得到更好的方案。
PS 我对卡顿零容忍,我还在用 Emacs,Emacs 中的卡顿只要配置弄的精细点,是完全可以解决的。
3 个赞
看了一下, 有点特点. 让我又想起了vim的text object, emacs里expand-region不是很好用, 还是喜欢vim里text object的方式, 可以明确地一步到位.
写代码主要是选择和跳转, 我觉得有text object就够了, 然后再让跳转和选择支持text object, 差不多完美.
emacs 里面的各种 thing 和 text object 是一样的。只不过 emacs 没有先动词再名词的这种操作方式。vim 当中实际有时先动词,有时先选择。先选择本身没有什么不好的,只不过 vim 里面要先v一下很麻烦,所以人们认为先动词是更高效的操作方式。
emacs里的thing好像不够丰富, expand-region里多一点, 不过还是比较喜欢vim里一步到位的方式. 自己之前搞了一个插件, 来实现这个, 一直没弄好.
vim的方式(动词加名字, 谓语加宾语, v加object, 还有量词)我倒是挺喜欢, 很直观很连贯, 容易记忆, 且有行云流水的感觉.
Emacs 里面的 thing 也很多,还可以自定义。其实一个 thing 用好了就可以做很多事。
比如说 Meow 里面的 l
所以说原则是 Less is more
lr4lk, 5个键,是比较长的。有考虑要不要让 negative argument 能启动选择的时候整个倒过来。不过不是特别重点,还要看使用体验。
值得一提的是全是顺手的按键,所以为什么没有保留 Vim 里面的 f 和 t,因为 f) 这样后面接的很多键,都不好按。
aeghn
18
视频有点长,主要听了前面,手动点赞。
楼主可以出一个打造自己的模式编辑的教程啊,感觉会很棒。
啊,我就不该录前面。。写模式编辑很容易的啊,但是没有什么人会需要写。
lr4lk: 这都支持
对于这种, 我一般喜欢先选中, 然后再删, 确保没有操作失误, 比如多删或者少删.
这种风格相当于有个命名空间, 也不错.