![설정 플래그를 사용하지 않고 bash와 X11 사이에 마우스 붙여넣기 버퍼(클립보드 아님)를 어떻게 공유할 수 있습니까?](https://linux55.com/image/127483/%EC%84%A4%EC%A0%95%20%ED%94%8C%EB%9E%98%EA%B7%B8%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%A7%80%20%EC%95%8A%EA%B3%A0%20bash%EC%99%80%20X11%20%EC%82%AC%EC%9D%B4%EC%97%90%20%EB%A7%88%EC%9A%B0%EC%8A%A4%20%EB%B6%99%EC%97%AC%EB%84%A3%EA%B8%B0%20%EB%B2%84%ED%8D%BC(%ED%81%B4%EB%A6%BD%EB%B3%B4%EB%93%9C%20%EC%95%84%EB%8B%98)%EB%A5%BC%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EA%B3%B5%EC%9C%A0%ED%95%A0%20%EC%88%98%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
관련 답변(아래 링크)이 있지만 이를 위해서는 플래그 설정이 필요합니다. Ctrl+ U다르게 작동합니다. \Cu
아니면 \C-u
그냥 교체할 수 없습니다 \eW
(아래 코드).
이게 뭐야?Bash와 X11 간에 클립보드 공유제안.
if [[ -n $DISPLAY ]]; then
copy_line_to_x_clipboard () {
printf %s "$READLINE_LINE" | xsel -ib
}
bind -x '"\eW": copy_line_to_x_clipboard'
fi
그래서 질문은: bash에 텍스트를 추가하고 CtrlXorg U의 마우스(가운데 클릭) 붙여넣기 버퍼로 잘라내는 방법은 무엇입니까?
답변1
함수는 해당 줄을 클립보드에 복사합니다.
Ctrl+C/Ctrl+V 클립보드 대신 마우스 붙여넣기 버퍼를 사용하려면 xsel
이 -b
옵션 없이 실행하세요.
복사하지 않고 잘라내려면 나중에 텍스트를 삭제하세요. READLINE_LINE
빈 문자열로 설정하세요.
Bash에서 제공하는 터미널 설정은 stty
자체 키 바인딩보다 우선합니다. 나는 주로 터미널의 설정을 존중하는 것이 목적이라고 생각합니다.BackSpace를 보내 ^H
거나^?
stty -a
, 그러나 보다 일반적으로 이는 bash에 나열된 모든 문자 (예 ^C
: ^D
, , ^H
, ^Q
, ^S
, ^W
및 ) ^Z
에 대한 키 바인딩이 기본적으로 사용되지 않음 을 의미합니다. 리바인드하려는 제어 문자의 stty를 설정 해제해야 합니다.^\
^?
~/.bashrc
이것은 Ubuntu 16.04의 bash 4.3에서 다음 코드로 저에게 효과적이었습니다.
if [[ -n $DISPLAY ]]; then
stty kill ''
copy_line_to_x_clipboard() {
printf %s "$READLINE_LINE" | xsel -i;
READLINE_LINE= READLINE_POINT=0
};
bind -x '"\C-u": copy_line_to_x_clipboard';
fi
이것을 명령줄에 붙여 넣으면 작동하지 않습니다. 귀하의 의견에서 언급한 효과를 얻었습니다. 즉, ^U
inserts aliteral 을 누르는 것입니다 ^U
. 을 실행 stty kill ''
한 다음 bind -x …
후속 명령을 실행하면 작동합니다.