我自己为 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