gpt4 book ai didi

shell - 集成 readline 的 kill-ring 和 X11 剪贴板

转载 作者:行者123 更新时间:2023-12-04 00:33:57 25 4
gpt4 key购买 nike

在我的 .zshrc ,我使用以下代码段来集成 shell 的剪贴板和我的主要 X11 剪贴板。由于这种集成,我可以在 emacs、firefox 和终端之间剪切和粘贴文本,而无需使用鼠标。

kill-line() { zle .kill-line ; echo -n $CUTBUFFER | xclip -i }
zle -N kill-line # bound on C-k

yank() { LBUFFER=$LBUFFER$(xclip -o) }
zle -N yank # bound on C-y

注意:我在 mac os x 上也使用了这个技巧(使用 pbcopy/pbpaste 而不是 xclip),感谢 Synergy我的两台电脑共享一个剪贴板。整洁的。但它不适用于 readline。而且我发现自己经常使用 readline,例如在 (i)python、gdb、ncftp 中……

所以我的问题来了:有没有办法将 readline 的剪贴板与 the-rest-of-the-world 集成?

当然,我在想一些 .inputrc这里有巫术,但欢迎任何见解/想法。

最佳答案

Bash 4.0 引入了一些新功能:

NEWS

The command assigned to a key sequence with `bind -x' now sets two new variables in the environment of the executed command: READLINE_LINE_BUFFER and READLINE_POINT. The command can change the current readline line and cursor position by modifying READLINE_LINE_BUFFER and READLINE_POINT, respectively.


NEWS文件似乎不准确; READLINE_LINE (没有 _BUFFER )是其他地方记录的并且实际有效的内容。

以下将模拟 Bash 现有 Ctrl+(U|K|Y) 的行为,但会影响 X 选择,尽管我使用 Meta/Esc,因为我不喜欢覆盖现有功能。
_xdiscard() {
echo -n "${READLINE_LINE:0:$READLINE_POINT}" | xclip
READLINE_LINE="${READLINE_LINE:$READLINE_POINT}"
READLINE_POINT=0
}
_xkill() {
echo -n "${READLINE_LINE:$READLINE_POINT}" | xclip
READLINE_LINE="${READLINE_LINE:0:$READLINE_POINT}"
}
_xyank() {
READLINE_LINE="${READLINE_LINE:0:$READLINE_POINT}$(xclip -o)${READLINE_LINE:$READLINE_POINT}"
}
bind -m emacs -x '"\eu": _xdiscard'
bind -m emacs -x '"\ek": _xkill'
bind -m emacs -x '"\ey": _xyank'

我还是喜欢 screen更多,但这更好地回答了您的问题——只要您关心的唯一 readline 应用程序是 Bash。

关于shell - 集成 readline 的 kill-ring 和 X11 剪贴板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/994563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com