답변:
Zsh에는 다른 응용 프로그램과 통신하지 않는 클립 보드가 내장되어 있습니다. 스크립트가 매우 가능하기 때문에의 몇 줄과 통신 할 수 있습니다 ~/.zshrc
. xclip 또는 xsel 이 필요합니다 . vi 모드의 개념 증명에 대해서는 클립 보드에서 vi 지원 zsh 또는 bash 쉘로 붙여 넣기를 참조하십시오 . 다음은 이맥스 모드에 해당하는 코드입니다 (아마도 다른 kill-*
위젯 과 비슷한 것을 원할 것입니다 ).
x-copy-region-as-kill () {
zle copy-region-as-kill
print -rn $CUTBUFFER | xsel -i -b
}
zle -N x-copy-region-as-kill
x-kill-region () {
zle kill-region
print -rn $CUTBUFFER | xsel -i -b
}
zle -N x-kill-region
x-yank () {
CUTBUFFER=$(xsel -o -b </dev/null)
zle yank
}
zle -N x-yank
bindkey -e '\ew' x-copy-region-as-kill
bindkey -e '^W' x-kill-region
bindkey -e '^Y' x-yank
X11 클립 보드를 사용합니다 (일반적으로 Ctrl+ C/ Ctrl+ 으로 액세스 V). -b
X11 기본 선택을 대신 사용 하는 옵션을 제거하십시오 (선택시 자동 복사 및 마우스 가운데 버튼으로 붙여 넣기).
Zsh의 컷 버퍼를 X 클립 보드에 통합하고 싶었습니다. 위에서 언급 한 http://stchaz.free.fr/mouse.zsh를 시도했지만 모든 Zsh 작업이 클립 보드에 채워지는 것을 싫어합니다. 예를 들어, 때로는 브라우저에서 무언가를 복사 한 다음 쉘로 이동하여 명령 행을 편집 한 후 붙여 넣기합니다. 그러나 종종 단어를 삭제하는 등 명령 줄을 편집하면 Zsh 컷 버퍼가 수정됩니다. 더 좋든 나쁘게도 X에는 킬 링이 아닌 클립 보드 만 있으므로 Zsh 편집 작업이 클립 보드를 덮어 쓰면 붙여 넣기를 원하는 항목이 손실됩니다. Zsh 또는 Emacs에서하십시오.
대신 내가 한 것은 zsh를 통해 X 클립 보드와 상호 작용할 수있는 새로운 특수 키 바인딩을 만드는 것입니다. "^ Xw"및 "^ Xy"는 Emacs와 Zsh에서 모두 사용되지 않으므로 두 응용 프로그램에서 모두 바인딩하여 일관된 인터페이스를 얻을 수 있습니다. 이렇게하면 일반 편집 작업, 컷 버퍼 및 킬 링이 그대로 유지됩니다. 클립 보드에 무언가를 복사하려면 영역을 설정하고 "^ Xw"를 수행하십시오 (또는 이미 영역을 종료하고 영역이 비활성화되어 있으면 컷 버퍼를 복사하기 위해 "^ Xw"를 수행 할 수 있음). 클립 보드에서 붙여 넣기는 "^ Xy"로 수행됩니다.
# define commands to copy and paste x clipboard
# ^Xw - copy region, or cut buffer
# ^Xy - paste x clipboard
# in both cases, modifies CUTBUFFER
copy-to-xclip() {
[[ "$REGION_ACTIVE" -ne 0 ]] && zle copy-region-as-kill
print -rn -- $CUTBUFFER | xclip -selection clipboard -i
}
zle -N copy-to-xclip
bindkey "^Xw" copy-to-xclip
paste-xclip() {
killring=("$CUTBUFFER" "${(@)killring[1,-2]}")
CUTBUFFER=$(xclip -selection clipboard -o)
zle yank
}
zle -N paste-xclip
bindkey "^Xy" paste-xclip
당신은 한 번 봐 가지고 할 수 있습니다 http://stchaz.free.fr/mouse.zsh 추가 마우스 지원 외에 또한 X 클립 보드와 상호 작용을 시도합니다.
kill-region
와vi-delete
와yank
와vi-put-after
마찬가지로 포장 등vi-yank
등. (중앙에서 수행하는 방법을 찾지 못했습니다)