最近初步玩了一下 helix, meow 之后,对未来的编辑模式有了一点想像,和大家分享讨论一番。 一,动词后置,可以使被操作对象产生链式调用,紧凑高效。 二,所见即所得,操作前和操作中要直接表达出变化的过程,不要有任何确认步骤。 三,选择和操作完全解耦,并且支持强大的扩展方式。选择要支持各种语义化表达,例:我要选中当前文件里头所有的函数名所在的行(函数名),然后再过滤掉一行超过50个字符的行(字符数)。操作也要支持符合文本特征的各种表达,比如选中的几个部份支持顺逆时针循转,文本按顺序前后滚动。文本所在块支持各样对齐方式,文本所在字母支持递增,文本所在数字支持递减。 这些功能虽然还没看到谁完全实现,但我感觉已经在要来的路上了。哈哈
跟看英语似的,每个字都认识,放在一起愣是看不懂什么意思。。。
除非脑机接口诞生,vim和emacs是目前为止人能做到最高效的编辑模式了。你说的那些想做的话都可以在这两个编辑器里实现,自己加插件就好。
以前看到很多网上的 “你为什么应该用 vim” 的这种文章, 似乎都有个默认前提 “只有 vim 这一种模态编辑方式, 并且这种方式最高效”. 在接触 emacs 之前, 我也一直以为只有 vim 这一种模态编辑方式, 也让自己逐渐去学习 vim 的编辑方式. 但我一直以来都无法真正地去适应 vim, 原因就在于 vim 的 指令在前, 选区在后. 我认为这反直觉, 至少反我的直觉. 宣扬这点的文章通常都以英语, 汉语等人类语言的 动词在前, 名词在后 来说明这是符合直觉的. 然而在人类语言中, 有相当一部分语言, 比如日语, 是 名词在前, 动词在后 的, 我觉得这种语序的直觉并不能很好地迁移到人机交互上. 我的人机交互的直觉, 我相信全球绝大多数人也是这样, 是先选中, 再执行操作, 各种 GUI 应用, 遵循的都是这个逻辑, 然而用 vim, 我必须强迫自己反过来, 所以最后选择不为难自己, 放弃 vim
很多人应该对在vr写代码很感兴趣,认为这是未来,但现在vr好像仅仅只当作一个大屏显示器用都还不行
emacs应该不是编辑模式,vim的编辑模式属于上个时代了。我说的那几点vim目前就做不到,vim的功能只是我所描述的功能的一个子集
我认为真正的挑战在于在满足选择,过滤,操作无限可能的前提下,如何设计出一套高效统一的按键,这很考验你的艺术美感。meow里的s命令就感觉蛮不错的
光是眼球追踪就能淘汰大部分navigation的键位了
个人感觉vim的动词前置方案效率还是高于动词后置方案的,因为动词前置使得text object和motion是独立的keymap,可以有更多的text object提高编辑效率,动词后置需要配合一点dwim
有同感,先选择(移动)再编辑更顺手,cyp等action应该放在motion之后感觉更好一些。 我习惯v模式,这样可以确认会对哪些内容做编辑,避免误操作。
编辑模式是emacs的一部分,你说的vim做不到仅仅是你做不到而已。vim和emacs已经暴露了足够的接口让开发者可以扩展它们,只不过emacs一致性更好偏向elisp vim则是遵循unix工具间协作的风格,可以用其它外部语言对其扩展。我很好奇你的这些需求难道是用图灵完备的语言都实现不了的?你所谓的子集也不过只是初始的功能不满足你而已。我已经说了vim和emacs这种软件都可以通过插件拓展,它们的生命力就在于无限的扩展性。
我早就使用过眼球追踪了,相信我,眼球追踪只不过是替换了鼠标追踪的部分职能而已,本质上来说它还是一个所见即所得的功能。vim和emacs是所想即所得,不是一个路子。举个最简单的例子,你要修改一句话中第n个 hello单词,眼球追踪你需要在句子中寻找上下文所有的hello单词然后数一下是否到了第n个单词你才能开始编辑。而在vim中,你只需要移动到那一行然后搜索/hello再按下n数字+n键就移动到了这个单词。全程你只需要注意你的行号,而不需要用眼睛在上下文中检索,光光就这么一个常见的navigation 眼球追踪就做起来费劲 更不要说其它的了。
显然不包括你说的这种。 而且有时同一个屏上的某个单词可能比较远,需要用 比如swiper去定位(类似你举的这个例子),眼球追踪可以直接略去这个过程。
感觉眼球追踪如果需要想鼠标一样精确定位,其实优势不是很大,如果可以基于text object操作就可以不用精确定位,但是这样做其实就是省去搜索步骤的avy,编辑效率未必能高很多。。。
我之前的表达有误,我说的是具有多个模式的编辑方式。这个emacs原生是不支持的。然后我讨论的范围也是这个多模式的编辑哲学。然后我说vim实现不了,也是欠妥的。我的本意不是说它不能实现,而是它原来的设计哲学不是按这个方向去的。所以我讨论的重点在设计哲学,不是说它能不能实现。之前表述让您误解,抱歉哈
为什么我不需要模式编辑:
但从编辑来讲,无脑简单粗暴的操作比炫技式的操作高效得多,满足这一点的vim,emacs基本操作都可以达到,如果再加上宏操作就已经很完美了。相比而言vim的操作按键次数更少,更为高效。
此话题已在最后回复的 5 天后被自动关闭。不再允许新回复。