【问题标题】:Kakoune: How to map "jump forward" and "jump back" in goto mode (e.g. map 'gp' to <c-i>)Kakoune:如何在 goto 模式下映射“向前跳跃”和“向后跳跃”(例如,将 'gp' 映射到 <c-i>)
【发布时间】:2018-06-04 18:37:02
【问题描述】:

我使用 dvorak 键盘,并且我想在使用 &lt;c-i&gt;&lt;c-o&gt;(向后或向前跳跃)时减少伸手去拿控制键的压力。我认为 ',' 和 'p' 键在与 goto 菜单结合使用时是完美的(例如,当先按 'g' 时)。 (对于你们这些 qwerty 人来说,这意味着键盘上的键位置 'w'、'e' 和 'r',当从 goto 菜单中点击时会跳回,跳到最后一个编辑,然后向前跳)。于是……

这就是我想要的:

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

但是,由于莫名其妙的原因,这些命令都不起作用。我尝试了一堆实验,发现了一些更奇怪的东西:

尝试使用用户模式而不是转到模式(如此处所述: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)

【问题讨论】:

    标签: kakoune


    【解决方案1】:

    问题 A 的答案:

    here所述,

    注意诸如&lt;tab&gt;&lt;c-i&gt;&lt;ret&gt;&lt;c-j&gt; 之类的键同音词 和&lt;c-m&gt;

    我将&lt;c-i&gt; 替换为&lt;tab&gt; 来工作,如下所示:

    :map global user p '<tab>' -docstring 'jump forward'
    

    问题 B:

    我无法弄清楚为什么 goto 模式与用户模式不同,但在命令前添加一个斜杠似乎可以解决所有问题。我发现的另一种方法是将&lt;esc&gt; 添加为操作键的第一部分,这样可以在执行其余键之前将其恢复为正常模式。

    问题 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!
    

    【讨论】:

      猜你喜欢
      • 2016-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-14
      • 1970-01-01
      • 2020-02-11
      • 1970-01-01
      相关资源
      最近更新 更多