[请教] 无法适应Doom emacs的evil 模式,有人能介绍一下evil的优点好处和技巧吗?

我用emacs有超过10年,当初我也觉得我适应不了evil,感觉模式编辑离我很遥远,最后是小指弯曲多疼了才转用evil,熟练后感觉挺好的呀,主要是要掌握模式编辑的思想,而且evil也支持在不同模式下的组合键位捆绑,总体感觉比vim灵活多了。现在后悔当初为啥没早点掌握模式编辑呢。

其实讲道理 如@redguardtoo 大佬说的 vim的按键方式是比较科学的。可以学习体会一样 觉得好就转 这个因人而已

不要A好B不好 非A即B (避免门户之见 doom就是证明)

2 个赞

vim这套按键吧,用了几年了,其实还是有很多不习惯的地方。切换模式很多时候还会打断思维。

自己不想改的原因是,这套快捷键都成主流了。好多时候ssh上去都是只有一个无配置vim。所以平时都尽量用vim的快捷键。

1 个赞

我都是把Lock Cap 换成 Ctl,所以从来不觉得小指不适,不过感谢你的建议,我觉得我还是可以给evil一些机会

嗯,并不是想要分黑白,既然都能长期存活下来,必然都是非常好的东西。只是我体验了一段时间不适用,想咨询一下大家~

这个应该不算分黑白吧,更多是自己的感受。

vi这套模式存下来,更多是因为在终端好用。它不太需要Ctrl meta键。最近在页面上ssh连接,ctrl键几乎不能用,这时候vi就能发挥作用了。

emacs原生键位和evil的vim模式编辑我都用,而且都非常熟练,混合使用也非常高效,比各自单独使用要高效,1+1>2.

emacs原生键位,在键入一个新文件,并随时移动光标以及对键入做修改时,是高效的,vim的模式切换这时候就会感觉烦。

vim模式的优势在于,对一个现成的有内容的文件进行跳转以及修改时,是非常高效的。

vim是个编辑器(望文生义的意思就是,对现有的内容进行编辑)

当然这里不讨论在vim 可以在insert模式也设置一套emacs类似的用修饰键的方式,(否则这就成emacs了)。vim在原始insert模式下只是一个高级一点的记事本。

2 个赞

常用的emacs命令,我也极少用Alt Ctrl Shift这种组合按键,如果遇到这种默认按键,会改成sequence按键, 像 C-x x x。和vim的sequence方式异曲同工,而且还不用切换模式,不管在什么模式下都能随时按,这是比vim要切下模式要好的。

另外我的SPACE键改成了单击时是空格,长按或与其他键组合按时是Ctrl,实现了emacs Ctrl- 和 evil leader 按键的双重功能,emacs和vim的混合使用,浑然天成了。

用esc,vim下另外可以用 C-[ 来当ESC用。

和emacs一样,不要想着可以在其他ide上完整体验vim的便利。

1 个赞

C-[<ESC> 绑定,是终端的特性。

终端模拟器将其转换为 <ESC> (0x1b) 字符发给 vim,而 vim 并不知道你按下了 C-[ 组合键。(它甚至不能确定你是按下了 <ESC> 键,还是因为某些问题(比如网络延迟)导致某个 control sequence 没有及时发送过来,所以你会发现 vim 响应 <ESC> 键会慢一些,当然这是题外话了)

似乎没有标准规定这一映射(如有误请指正),但它可以追溯到早年的终端机,比如 VT100:Digital VT100 User Guide: Programmer Information

1 个赞

原来如此,学到了 :+1:

C-c应该是比你说的这个更方便一些 :smile:

vim的key,真的只是习惯,我按esc已经忘记自己在按了。

确实,ESC 习惯就好了,没的按还不习惯了。

但是习惯后,如果一直是活在 vim 按键的世界里倒是没什么。如果经常还要用 word,outlook,excel这些没有 vim 按键的环境,经常会编辑好一些内容,一个 习惯性 ESC ,刚编辑好的内容没了。

我用了一个月 vim 按键,后来就果断用 emacs 按键了,现在不管在哪里,都是 emacs 按键。

同理 Emacs 会把 ESC 当做 Alt 键。

论模式编辑按键设计,Evil/Vim最大好处是,默认支持的环境多,切换作业环境,都适应按键。但其他方面,模式编辑当推狗哥的MEOW, 不接受反驳。哈哈哈哈

1 个赞

用过vim, doom,经常需要按j,k到当前看的行。现在改用emacs按键后,C-n,C-p按得没j,k舒服。只有改掉这个习惯,只用C-v,M-v了。

快速按jk或者kj,应该能触发esc,即使我很早以前用vim,也会这样配置,这样就不会有esc难按的问题了

那和用方向键有啥差別?

我要么用触摸版,要么用 swiper,基本不会想向上还是向下几行。用 vim 的时候超过了3行左右也是用 / ? 来定位。