kakoune - Kakoune:如何在 goto 模式下映射“向前跳跃”和“向后跳跃”(例如,将“gp”映射到)
问题描述
我使用 dvorak 键盘,我想减少使用<c-i>
and <c-o>
(向后或向前跳跃)时伸手去拿控制键的压力。我认为',' 和'p' 键在与goto 菜单结合使用时是完美的(例如,首先按'g' 时)。(对于你们这些 qwerty 人来说,这意味着键盘上的键位 'w'、'e' 和 'r',当从 goto 菜单点击时会跳回,跳到最后一个编辑,然后向前跳)。于是……</p>
这是我想要的:
1) :map global goto , '<c-o>' -docstring 'jump back' // Does not work
2) :map global goto p '<c-i>' -docstring 'jump forward' // Does not work
但是,由于莫名其妙的原因,这些命令都不起作用。我尝试了一堆实验,发现了一些更奇怪的东西:
尝试使用用户模式而不是 goto 模式(如此处所述:https ://github.com/mawww/kakoune/wiki/Implementing-user-mode )。
3) :map global user , '<c-o>' -docstring 'jump back' // Works
4) :map global user p '<c-i>' -docstring 'jump forward' // Does not work
尝试对 map 命令中的命令字符串进行各种更改(返回 goto 模式)
5) :map global goto p 'd' -docstring 'delete the selection' // Does not work
6) :map global goto p '/d' -docstring 'delete the selection' // Works! (Why??)
7) :map global goto p '\d' -docstring 'delete the selection' // Works! (Why?!?)
8) :map global goto p '\<c-o>' -docstring 'jump back' // Works! (Why?!!?!!?)
9) :map global goto p '\<c-i>' -docstring 'jump forward' // Does not work (Why!???)
综上所述:
a) 为什么#3 有效,而#4 无效?
b) 为什么在命令字符串(例如在#6、#7、#8 中)前面添加斜杠(任一类型)会使映射到 goto 模式的各种命令起作用?
c) 我怎样才能让我的#1 和#2 的意图起作用?(技术上 #8 解决了我对 #1 的意图,但我仍然无法回答如何做 #2)
解决方案
对问题 A 的回答:
正如这里提到的,
注意键同音词,如
<tab>
vs<c-i>
和<ret>
vs<c-j>
和<c-m>
我开始<c-i>
工作,将其替换为<tab>
,如下所示:
:map global user p '<tab>' -docstring 'jump forward'
问题乙:
我无法弄清楚为什么 goto 模式与用户模式不同,但是在命令之前添加一个斜杠似乎可以解决所有问题。我发现的另一种方法是添加<esc>
作为操作键的第一部分,在执行其余键之前将其恢复为正常模式。
对问题 C 的回答:
通过结合问题 A 和 B 的发现,我们得到以下工作地图命令:
:map global goto , '\<c-o>' -docstring 'jump back' // Works!
:map global goto p '\<tab>' -docstring 'jump forward' // Works!
...或者...
:map global goto , '<esc><c-o>' -docstring 'jump back' // Works!
:map global goto p '<esc><tab>' -docstring 'jump forward' // Works!
推荐阅读
- linux - 为什么 rsync 无法复制所有文件?
- swift - 如何使用 Pin Joints 拖动 SKSpriteNode
- java - 如何在android中获取SD卡路径?
- spring-boot - 在java中为JSON数组添加值
- python - 导入python模块的本地副本
- apache-spark - Spark Streaming Kafka 问题
- google-fit - 分页在 Google Fit 中没有结果
- ruby - 键中的 ruby to_yaml 冒号
- java - Where to place comprobations in Java?
- multithreading - Running tsung_stats from tsung and getting Symbol not found: _Perl_xs_handshake error