関連する回答(下のリンク)がありますが、これにはフラグ設定が必要です。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にテキストを追加し、CtrlXorgUのマウス(中央クリック)ペーストバッファに切り取る方法は何ですか?
答え1
関数はその行をクリップボードにコピーします。
Ctrl + C / Ctrl + Vクリップボードの代わりにマウスペーストバッファを使用するには、xsel
この-b
オプションなしで実行してください。
コピーせずに切り取るには、後でテキストを削除してください。READLINE_LINE
空の文字列に設定してください。
Bashが提供する端末設定は、stty
独自のキーバインディングよりも優先されます。私は主に端末の設定を尊重することが目的だと思います。BackSpaceを送信^H
する^?
stty -a
しかし、より一般的には、これはbashにリストされているすべての文字(たとえば、、、、、、、および)の^C
キー^D
バインディング^H
がデフォルトで使用されていないことを意味します。リバインドする制御文字のsttyを設定解除する必要があります。^Q
^S
^W
^Z
^\
^?
~/.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 …
を実行すると機能します。