#kakoune #hint #editor #key #selection #binary #composable

app hop-kak

为Kakoune提供的提示二进制文件

2个不稳定版本

0.2.0 2023年12月14日
0.1.0 2023年12月14日

#104 in 文本编辑器

BSD-3-Clause许可

19KB
378

Hop:将提示功能带到Kakoune的选择中

目录

此二进制文件旨在与Kakoune编辑器一起使用,并基于用户的当前选择提供提示功能。工作流程很简单

  1. 在您的缓冲区中做出选择。
  2. 通过提供选择在%sh{}块中调用二进制文件——通常通过$kak_selections_desc
  3. 提示出现。您可以按提示的顺序按键以减少提示。
  4. 通常,您会减少直到只剩下一个提示;在这种情况下,提示功能被禁用,您将只剩下单一的选择。但是,您可以随时通过按<esc>键来保留提示功能。

安装

目前,唯一的安装渠道是https://crates.io。它需要安装cargo

cargo install hop-kak

配置

Kakoune选项

在尝试使用Hop之前,您必须包含hop.kak文件。它包含

  • hop_ranges选项。用于使用标签突出显示您的缓冲区。
  • hop_label面定义。您可以随意覆盖默认设置。

另一种方法是,在您的kakrc中用hop-kak --init来自动注入hop.kak文件

evaluate-commands %sh{ hop-kak --init }

--init仅在hop-kak编译时带有init功能时可用,默认情况下是启用的。

hop-kak选项

hop-kak — 构建的二进制文件 — 没有任何配置文件。相反,它通过传递 CLI 参数进行配置

  • -k --keyset:要使用的关键集。这取决于你的键盘布局。请明智地选择!它不能有任何重复的键,并且按键按重要性排序;即,更容易到达的按键应该排在前面。
    • 对于 QWERTY,我们推荐 TODO
    • 对于 AZERTY,我们推荐 TODO
    • 对于 BÉPO,我们推荐 etisura,cnovpdélxqygàhfbjz
  • -s --sels:要提示的选择。你应该始终传递 $kak_selections_desc
  • -l --labels:之前生成的标签。你永远不需要使用这个参数。
  • -z --key:用于减少的键。你永远不需要使用这个参数。
  • --handle:将光标放在选择的部分;锚点或光标。默认为锚点。

用法

这个二进制文件承担的责任很少,这样人们就可以在更广泛的情况下使用它。因此,你将不得不围绕 hop-kak 做一些工作。 hop-kak 通过读取选择、突出显示它们并让 Kakoune 等待按键来终止或减少提示来工作。如果你决定减少提示,hop-kak 将过滤你的选择并将它们减少到映射新的提示集。因此,hop-kak 可以基本上看作是 Kakoune 选择的 trie 减少器。它是可组合的。你传递给它初始选择,然后它会交互式地过滤它们。

无论你的选择是什么,你总是想要使用以下命令开始跳跃会话

eval -no-hooks -- %sh{ hop-kak --keyset "<YOUR_KEYSET_HERE>" --sels "$kak_selections_desc" }

例如,使用 bépo 键盘布局,你可以将 è 键映射为使用当前选择开始跳跃

map global normal è ':eval -no-hooks -- %sh{ hop-kak --keyset "etisura,cnovpdélxqygàhfbjz" --sels "$kak_selections_desc" }<ret>'

然后,就取决于你自己来设计你自己的工作流程了!

工作流程示例

默认键集

如果你打算有多个工作流程,你应该有一个选项来设置你的键集。例如,对于 bépo

declare-option str hop_kak_keyset 'etisura,cnovpdélxqygàhfbjz'

更好的选择

将一个键映射为选择缓冲区的可见部分是非常有用的。 <a-%> 是一个好的候选,因为 Kakoune 目前没有将其映射

map global normal <a-%> ':execute-keys gtGbx<ret>'

这将有助于创建选择。我们假设你下面有这个绑定。你也可以为此创建一个命令

define-command hop-kak %{
  eval -no-hooks -- %sh{ hop-kak --keyset "$kak_opt_hop_kak_keyset" --sels "$kak_selections_desc" }
}

选择并提示可见单词

使用 <a-%> 映射,你可以使用 <a-%>s\w+ 选择 单词,然后按你的映射开始跳跃。

减少键数和控制键的更好方法是创建一个像这样的小函数

define-command -override hop-kak-words %{
  exec 'gtGbxs\w+<ret>:eval -no-hooks -- %sh{ hop-kak --keyset "$kak_opt_hop_kak_keyset" --sels "$kak_selections_desc" }<ret>'
}

并将其映射到你的键;例如,SPC è

map global user è :hop-kak-words<ret>

依赖项

~1.7–2.3MB
~41K SLoC