可否改变 vim 中 leader 键的按键方式?

2022-01-20 16:54:38 +08:00
 yayiji
vim 在 normal 模式下的按键模式是连续键击,例如<leader>k ,按键方式是先按 leader 键后按 k ,而不像我们日常使用组合键的模式,按下一个修饰键的同时按住另外的一个键,比如 Ctrl+C 是同时按键两个键。

可否把 leader 键的按键模式改成组合键的模式?

vim 的键击模式对于一次性操作没什么问题,但对多次重复操作不是太方便,比如我通常把<leader>k 设置为把当前行上移,当把当前行上移多行时,在 vim 的操作模式下显得不太方便,需要持续地按<leader>k ,实操起来有点繁琐。当然,可以用点(.)操作符来简化这个过程,但点操作符有两个缺点,其一是,有点不太符合我的操作直觉,其二是,对于比较复杂的键位映射无法达到预期效果。
1909 次点击
所在节点    Apple
13 条回复
pooorguy
2022-01-20 17:25:32 +08:00
上移多行一般不都 数字+K 么
jdhao
2022-01-20 17:38:59 +08:00
你需要改变思维,让你的 mapping 接收一个数字,只按 <leader>k ,把当前行上移一行,如果前面还有数字,例如先按 5 ,再按<leader>k ,那就把当前行上移五行,都是可以编程实现的。

下伙子多学学
jdhao
2022-01-20 17:41:54 +08:00
@jdhao 这个才是完全理解了 vim 的思维,例如按 w ,跳一个单词,但是按下 5w ,会跳 5 个单词,而不是我傻傻的按 5 次 w
zwpaper
2022-01-20 17:48:43 +08:00
建议早日弃暗投明,练就 Emacs 八爪鱼组合键大法( Doge
jheroy
2022-01-20 17:49:53 +08:00
你需要改变的是操作方式,像把当前行移到其他位置这种我一般都是 dd 当前行,然后光标跳到要去的那一行按 p 就行了。 如果用 vim 还按照普通编辑器那样用的话就没必要用 vim 。
yayiji
2022-01-20 18:23:08 +08:00
@jdhao 这个我理解,其实我上述只是取个例子,我想的是有无改变这种按键方式的可能。对于数字的问题,不知道大家平时在使用时使用数字的频率高低,实际上我比较少使用数字,主要是两个问题,其一是数字键比较难按,二是我需要确定是具体数字后再做操作,有一些顿挫,影响操作的流畅,所以基本在极端情况才会使用数字。当然我并未掌握 vim 的哲学
jdhao
2022-01-20 18:54:49 +08:00
@yayiji 试试 set relativenumber ,可以看相对行号
lanlanye
2022-01-20 20:42:53 +08:00
喜欢组合键要不要试试 Emacs ( Doge
lanlanye
2022-01-20 20:45:03 +08:00
正经来说,Vim 好像没有你要的这种形式,但是上移这种操作一般不都是删除整行后跳到目标位置粘贴吗……
拿你举例的「向上移动一行」来说,完全可以直接 kddp 解决,为了这种功能写函数都没必要,也不会用到 leader 吧
AEDaydreamer
2022-01-20 21:21:33 +08:00
对于那个例子我的方案是,对于一般距离的移动还够用:
-- Move text up and down
keymap("v", "<A-j>", ":m .+1<CR>==", opts)
keymap("v", "<A-k>", ":m .-2<CR>==", opts)
ecnelises
2022-01-20 23:33:17 +08:00
我猜不行,因为系统 API 甚至底层中断里就是把功能键和其他键的位分开的
fatestigma
2022-01-21 04:18:24 +08:00
Emacs + evil ,让你保留 Vim 的键位,然后还可以同时享受 Emacs 组合键 ( Doge
yayiji
2022-01-21 13:50:29 +08:00
@lanlanye 需要重复点按的话,组合键确实更舒服。删除后粘贴确实是通用模式,逻辑上和剪切复制是一样的,适用范围更广,但是如若可以使用拖拽的话,拖拽会更直观一些(比如我有两个并排的窗口,对于移动文件,拖拽胜剪切复制)。我举的例子情境是一样的,在可视范围内移动,所以剪切复制反倒繁琐

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/829516

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX