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

관련 정보