vim/evil insert 模式小范围移动有没有好的经验?

使用 vim 或 evil 时,在邻近的两行、多行或单行中的多处修改后,总感觉 Esc 退出插入模式后移动光标比较麻烦。这时我一般会用 Emacs 的光标移动操作。

请教,Vimer 对上面描述的情形时有什么妙招?使用 Evil 的 Emacser 呢?

1 个赞

配置 jj 进入 normal 模式。evil 的话还可以保留 insert 模式下 emacs 一些移动光标的基本快捷键。不过我的感觉就是总是不如 emacs 单一模式来得顺手

如果是最近3行内的移动,我也是直接使用emacs的移动,这个叫做hybrid-mode, 在insert mode下面全部使用emacs快捷键,当阅读代码的时候进入normal mode + spacemacs leader navigation. 毕竟读代码的时间比写代码长,所以我觉得vim这种不伤身的按键方式更适合我。

3 个赞

改键,windows里有个touchcursor,是用space+hjkl改成方向键的,我虽然不用这个软件,但啥系统都改成这种快捷键的。

读代码多的人喜欢 vim 模式, 写代码多的人喜欢原生模式, 对于天天写代码的人, 来回切换模式很麻烦。

3 个赞

当时比较抗拒vim但又小指痛(19年刚入坑emacs那会了好像是)于是配置过只在只读模式下用evil键位,但是效果还是不尽如人意,因为在使用时有一种很强的感觉:我还是在用evil,只是将切换模式的键从esc或者ctrl加[换到ctrl加q了。

后来一直用doom,现在已经没有办法离开evil了

我不知道是不是我一个人这个习惯,我一直都在用无名指按,从来不用小拇指

我也不习惯用小拇指,小拇指力量小,不适合太重的活。小拇指只用来按 Shift ,Capslock, z 键和 a 键。Ctrl键用小拇指根部的手掌来按,或者用大拇指按。

C-o 进入临时 Normal 模式?

1 个赞

左 ALT 设置成按住不放时还是 alt, 单次敲击则是 ESC,按 esc 和按空格的感觉类似。

同一行如果是相邻 word 之间的跳转,esc 跳出再按 w/b 之类的 textobj 相关命令

同一行稍微远一点或者不在 textobj 边界的用 evil-snipe-f

再远一点的,在可视范围内用 avy,比如绑定f3就不用退出 evil insert 直接跳转

但个人还是习惯先 esc 到 normal mode, 然后大部分场景是 snipe 或 avy(一个是对默认 f/F 的增强 另一个改成原生 evil 用的比较少的单次按键, 比如 ; \ s q 都可以考虑) 所以只需要习惯两个按键就可以处理大部分跳转,而且这两个都支持中文拼音首字母。 (如果编辑代码,还可以加上比如 % 跳转括号)

一两行的小范围移动就用emacs style的C-bpfn好了,大范围的移动再用vim模式。另外在插入模式下,C-u是emacs的C-k的相反方向的删除,C-w是删除一个单词。

你有没有交换 CAPSLOCK 和 CTRL ?

看起来这个功能在 emacs/vim 底下可以不用其他软件直接实现

没有,正常键盘+无名指按ctrl

我是用 Karabiner 把 Mac 键盘的右 Command + hjkl 绑定成方向键了。 在 insert mode 很好用。

而且我这个绑定是全局的,目前感觉很方便,哪里都能用 hjkl 几乎不用思考(偶尔会忘了按 Command)。

其实也还好,习惯了也改不太过来。

比较喜欢这个,C-o在vim下用的挺多

我个人这种情况还是喜欢用 esc 来处理。因为 undo 时可以只回退一部分的修改。肌肉记忆后也没觉得很麻烦。而且是两三行内的这种经常会是比较有规律的,都拿宏或者 repeat 来完成了。

原生evil没用过,对于vim如果临近行重复修改可以研究一下.;,