bashとX11の間でクリップボードを共有する


11

ではこのスレッド X11でクリップボードに、以前にgnome-terminalの上をマウスで選択されたテキストをコピーする方法のトップの答えを示しています。

私の質問は、bashのセットマークを使用してターミナルからテキストの一部をコピーし、キーボードショートカット(つまりset-mark+ M-w)をコピーするとします。このクリップボードをX11と共有することはできますか?

編集:元の質問では、クリップボードをGNOMEと共有することについて話しましたが、Gillesが以下で指摘するように、GNOMEには特にクリップボードがないため(Xに一般的です)、質問を更新しました。


gnome-terminalでは、Ctrl + Shift + CおよびCtrl + Shift + Vを入力して、システムのクリップボードにコピーして貼り付けることもできます。
リーライアン

2
この投稿stackoverflow.com/questions/994563/…を参照 してください。しかし、私にとってはうまくいきません。
素晴らしいq

回答:


9

Bashのクリップボードはbashの内部にあり、bashはXサーバーに接続しません。

できることは、M-wbashの内部クリップボードに加えて、選択範囲をXクリップボード¹にコピーするという意味を変更することです。ただし、bashの統合はかなり緩く、bashコードから領域情報やクリップボードにアクセスする方法はないと思います。キーバインドを作成して、行全体をXクリップボードにコピーできます。²

if [[ -n $DISPLAY ]]; then
  copy_line_to_x_clipboard () {
    printf %s "$READLINE_LINE" | xsel -ib
  }
  bind -x '"\eW": copy_line_to_x_clipboard'
fi

シェルで凝ったことをしたい場合は、zshに切り替えてください。zshは(他の利点の中でも)、ラインエディターとスクリプト言語の統合がはるかに優れています。

if [[ -n $DISPLAY ]]; then
  x-copy-region-as-kill () {
    zle copy-region-as-kill
    print -rn -- "$CUTBUFFER" | xsel -ib
  }
  x-kill-region () {
    zle kill-region
    print -rn -- "$CUTBUFFER" | xsel -ib
  }
  zle -N x-copy-region-as-kill
  zle -N x-kill-region
  bindkey '\C-w' x-kill-region
  bindkey '\ew' x-copy-region-as-kill
fi

¹ Gnomeのは、特にクリップボードを持っていない、これはXに一般的である
² を結合したキーシーケンス:のbash 4.1のように、キー解析コードにバグがありbind -x、長い二つ以上の文字ではないかもしれないが。bash 4.2は、より長いプレフィックスのいくつかのケースを修正すると思いますが、すべてではありません。詳細については調査していません。


@Gillesのアイデアをありがとう!そろそろ学習してに切り替えるときがきたと思いますzsh
Amelio Vazquez-Reina

最後に!本当にありがとう!これcopy_line_to_x_clipboardはまさに私が非常に長い間欠けていたものです:Shift + Insertに相当するコピーです。私の好みには遠すぎるbind -x '"\C-x"ので、ctrl-x()に変更しましたEsc(Ccが可能な最も愚かな選択になるでしょう)。
pbarill

端末には通常、デフォルトでaltキーにバインドされているメタキーがあります。押しながら文字を入力するとesc、その文字が後に続くように変換されるため、と入力できますalt-w
DoMiNeLa10 2018年

7

@ギレスはすでに素晴らしい答えを出しました。にxclip何かをパイプするだけで、ターミナル出力をXクリップボードにコピーする非常に便利な方法であるの存在について触れておきます。

$ cat /etc/passwd | xclip

1
xclipデフォルトでプライマリバッファにコピーされるメモ。クリップボードを使用するには、を使用しますxclip -selection clipboard
スパーホーク2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.