如何在Kakoune中将内容复制到系统剪贴板?

11

你有查看这个链接吗? - Meninx - メネンックス
你能不能稍等一下? - romainl
@romainl 我考虑过了,但是:1)这种问题不太适合在 Github Issue 中提问 2)可能会有更多的人像我一样感到困惑 - Ford O.
5个回答

13

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

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

解释:

  • <a-|>将当前选择内容传递到其后面的命令。
  • xsel是一个用于操作X窗口系统剪贴板的程序。
  • --input告诉xsel从标准输入读取数据。
  • --clipboard告诉xsel使用哪个“selection”存储。有三个可选,你需要选择“clipboard”以便在其他地方粘贴。

这在Linux上可以工作。不确定MacOS是否可行,但我认为将内容传输到pbcopy应该会奏效。

编辑:为了方便起见,在您的.kakrc中以用户模式定义一个键绑定,如下所示:

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

现在您可以选择文本并按,y将其复制到系统剪贴板。前导逗号告诉Kakoune在用户模式下查找键绑定。


实际上,“--input”(“-i”)可以省略。当xsel的标准输出和标准输入不是tty时的默认行为是从标准输入读取,如果标准输入是tty,则默认行为是写入标准输出。 此外,“--clipboard”可以缩写为“-b”。或者完全省略,如果您想要复制到“主选择”,而不是剪贴板。 - MarSoft
安装了 xsel 后,<a-|> xsel -i -b 对我有效。无法进一步缩短它。这么简单的事情变得如此复杂,真是遗憾。 - user10898116
1
@Joe,我更新了我的答案,提供了一个更短的解决方案。 - harm
一个简单的、裸露的 xsel 保存到 primary,xsel -b 保存到 clip。 - usretc

3

补充已接受的答案,根据文档,如果您使用的Kakoune版本是2020年7月之后的版本,则可以将以下挂钩添加到您的kakrc文件中:

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

1
这不是一个键绑定,而是一个钩子,每次任何东西被拖动时都会运行xsel,从而使系统剪贴板与主“复制”寄存器保持同步。 - usretc
@usretc 谢谢您的纠正。我已经修改了答案。 - Concrete_Buddha

2

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


0

0

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

当您复制时,系统剪贴板将自动更新。

请注意,在Linux上,我使用wl-copy来处理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
}}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接