관련 답변(아래 링크)이 있지만 이를 위해서는 플래그 설정이 필요합니다. 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 …
후속 명령을 실행하면 작동합니다.