存在するこのスレッド上の答えは、gnome端末でマウスで以前に選択したテキストをX11のクリップボードにコピーする方法を示しています。
私の質問は次のとおりです。 bash設定フラグを使用して端末からテキストをコピーし、キーボードショートカット(たとえばset-mark
+ M-w
)をコピーするとします。このクリップボードをX11と共有できますか?
編集する:もともと質問でGNOMEとクリップボードを共有することについて話しましたが、Gillesが以下で指摘したように、GNOMEには特にクリップボードがないので(Xに共通)、質問を更新しました。
答え1
Bashのクリップボードはbashの内側にあり、bashはXサーバーに接続されていません。
M-w
あなたができることは、選択をXクリップボードとbashの内部クリップボードにコピーすることの意味を変更することです。しかし、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に切り替えます。
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
1
GnomeにはXに共通の専用クリップボードはありません。
2
bash 4.1以降、キー解析コードにバグがあります。バインドされたキーシーケンスのbind -x
長さは2文字を超えることはできません。私はbash 4.2がより長いプレフィックスのいくつかのケースを修正したと思いますが、まだ詳細を調べていません。
答え2
@Gillesはすでに良い答えを与えています。xclip
ターミナル出力をXクリップボードにコピーするのに非常に便利な方法でもあることの存在に言及したいと思います。何でもパイプで接続できます。
$ cat /etc/passwd | xclip