我如何在 Kakoune 中复制到系统剪贴板?

How do I yank to system clipboard in Kakoune?

如果我在 kakoune 中提取一个词,我如何将它粘贴到另一个编辑器(例如 gedit)中?

我读过 How to make vim paste from (and copy to) system's clipboard? 因为 vim 非常相似但是 kakoune 没有任何 * 寄存器。

原来你需要安装 xsel 然后在 wiki 上关注 this guide

如果所有链接都消失了,这是完整的解决方案:

<a-|> xsel --input --clipboard <ret>

解释:

  • <a-|> 将当前 selection 通过管道传输到后面的内容。
  • xsel 是一个用于操作 X 的剪贴板的程序。
  • --input 告诉 xsel 从标准输入读取。
  • --clipboard 告诉 xsel 使用哪个 'selection' 商店。共有三个,您需要 'clipboard' 以便粘贴到其他地方。

这将适用于 Linux。不确定 MacOS,我想通过管道传输到 pbcopy 就可以了。

编辑: 为了让生活更轻松,在 User 模式下定义一个键绑定,就像这样(在你的 .kakrc 中):

map global user y '<a-|>xsel -i -b<ret>'

现在您可以 select 文本并按 ,y 猛拉到系统剪贴板。前导逗号告诉 Kakoune 在用户模式下查找键绑定。

请注意,还有一个很棒的插件可以帮助解决这个问题。 Kakboard 无处不在,包括 Mac、Xorg 甚至 Wayland 环境。您还可以通过设置 kakboard_(copy|paste)_cmd 选项在更奇特的环境中设置您自己的自定义命令。

根据documentation,如果您的 Kakoune 版本是 post 2020 年 7 月,那么您可以将以下挂钩添加到您的 kakrc:

hook global RegisterModified '"' %{ nop %sh{
  printf %s "$kak_main_reg_dquote" | xsel --input --clipboard
}}

跨平台或与平台无关的解决方案:

系统剪贴板会在您拖动时自动更新。

注意,对于 linux,我使用 wl-copy for wayland。

hook global RegisterModified '"' %{ nop %sh{
    case $(uname) in
        Linux)
            wl-copy -n "$kak_main_reg_dquote" > /dev/null 2>&1 & ;; 
        Darwin)
            printf "%s" "$kak_main_reg_dquote" | pbcopy ;;
        esac
}}