复制并粘贴到 zsh 中

复制并粘贴到 zsh 中

我自己为 zsh 构建了这个小脚本,将 zsh 中的内容复制并粘贴到系统剪贴板(基本上从这里获取了所有内容:zsh 像 emacs 一样复制和粘贴

x-yank() {
    zle copy-region-as-kill
    print -rn -- $CUTBUFFER | pbcopy
}
zle -N x-yank

x-cut() {
    zle kill-region
    print -rn -- $CUTBUFFER | pbcopy
}
zle -N x-cut

x-paste() {
    CUTBUFFER=$(pbpaste)
    zle yank
}
zle -N x-paste

bindkey -M vicmd "y" x-yank
bindkey -M vicmd "Y" x-cut
bindkey -M vicmd "p" x-paste

但是,有一些小问题,我似乎无法解决:

  • 粘贴将删除光标下的当前字符,我更喜欢 Vim 方式,然后再插入它。
  • 复制不会删除选择。

有什么想法从哪里开始吗?

答案1

好吧,想通了,我可以直接操作不同的缓冲区:

x-paste() {
    PASTE=$(pbpaste)
    LBUFFER="$LBUFFER${RBUFFER:0:1}"
    RBUFFER="$PASTE${RBUFFER:1:${#RBUFFER}}"
}
zle -N x-paste

bindkey -M vicmd "p" x-paste

相关内容