Ada beberapa cara. Beberapa cara yang telah disebutkan termasuk (saya pikir) tmux, layar, vim, emacs, dan shell. Saya tidak tahu emacs atau layar, jadi saya akan membahas tiga lainnya.
Tmux
Meskipun bukan pilihan X, tmux memiliki mode salin yang dapat diakses melalui prefix-[
( prefix
adalah Ctrl+ Bsecara default). Buffer yang digunakan untuk mode ini terpisah dan eksklusif untuk tmux, yang membuka beberapa kemungkinan dan membuatnya lebih fleksibel daripada pilihan X dalam situasi yang tepat.
Untuk keluar dari mode ini, tekan q; untuk menavigasi, menggunakan Anda vim
atau emacs
mengikat (default = vim), jadi hjkl
untuk gerakan, v/V/C-v
untuk pemilihan karakter / garis / blok, dll. Ketika Anda memiliki pilihan Anda, tekan Enteruntuk menyalin dan keluar dari mode.
Untuk menempelkan dari buffer ini, gunakan prefix-]
.
Kulit
Setiap instalasi X11
tampaknya datang dengan dua program secara default: xclip
dan xsel
(agak seperti itu juga datang dengan keduanya startx
dan xinit
). Sebagian besar jawaban lain menyebutkan xclip
, dan saya sangat suka xsel
dengan singkatnya, jadi saya akan membahas xsel
.
Dari xsel (1x) :
Opsi input
-a, - tambahkan
tambahkan input standar ke pilihan. Tersirat -i .
-f, --follow
tambahkan ke seleksi ketika input standar tumbuh. Tersirat -i .
-i, --input
baca input standar ke dalam pilihan.
Opsi keluaran
-o, --output
tulis pilihan ke output standar.
Opsi tindakan
-c, --clear
hapus pilihan. Mengganti semua opsi input.
-d, --delete
Meminta agar pilihan saat ini dihapus. Ini tidak hanya menghapus seleksi, tetapi juga meminta ke program di mana seleksi berada bahwa konten yang dipilih dihapus. Mengganti semua opsi input.
Pilihan pilihan
-p, --primary
beroperasi pada pilihan PRIMARY (default).
-s, --secondary
beroperasi pada pemilihan SECONDARY.
-b, --clipboard
beroperasi pada pemilihan CLIPBOARD.
Dan hanya itu yang perlu Anda ketahui. p
(atau tidak sama sekali) untuk PRIMARY
, s
untuk SECONDARY
, b
untuk CLIPBOARD
, o
untuk keluaran.
Contoh: katakan saya ingin menyalin output dari foo
TTY dan menempelkannya ke halaman web untuk laporan bug. Untuk melakukan ini, sebaiknya menyalin ke / dari sesi TTY / X. Jadi pertanyaannya menjadi bagaimana cara mengakses clipboard dari TTY?
Untuk contoh ini, kami akan menganggap sesi X dipajang :1
.
$ foo -v
Error: not a real TTY
details:
blah blah @ 0x0000000040abeaf4
blah blah @ 0x0000000040abeaf8
blah blah @ 0x0000000040abeafc
blah blah @ 0x0000000040abeb00
...
$ foo -v | DISPLAY=:1 xsel -b # copies it into clipboard of display :1
Maka saya bisa Ctrl-V
memasukkannya ke dalam bentuk seperti biasa.
Sekarang katakan bahwa seseorang di situs dukungan memberi saya perintah untuk menjalankan untuk memperbaiki masalah. Ini rumit dan panjang.
$ DISPLAY=:1 xsel -bo
sudo foo --update --clear-cache --source-list="http://foo-software.com/repository/foo/debian/ubuntu/xenial/164914519191464/sources.txt"
$ $(DISPLAY=:1 xsel -bo)
Password for braden:
UPDATING %%%%%%%%%%%%%%%%%%%%%%% 100.00%
Clearing cache...
Fetching sources...
Reticulating splines...
Watering trees...
Climbing mountains...
Looking advanced...
Done.
$ foo
Thank you for your order. A pizza should arrive at your house in the next 20 minutes. Your total is $6.99
Pemesanan pizza tampaknya seperti penggunaan baris perintah yang produktif.
...bergerak.
Vim
Jika dikompilasi dengan +clipboard
(Ini penting! Periksa Anda vim --version
), Vim harus memiliki akses ke X PRIMARY
dan CLIPBOARD
pilihan. Kedua pilihan dapat diakses dari register *
dan +
, masing-masing, dan dapat ditulis dan dibaca dari pada waktu luang Anda sama dengan register lainnya. Sebagai contoh:
:%y+ ; copy/yank (y) everything (%) into the CLIPBOARD selection (+)
"+p ; select (") the CLIPBOARD selection (+) and paste/put it
ggVG"+y ; Alternative version of the first example
Jika salinan vim Anda tidak secara langsung mendukung akses ke pilihan X, itu bukan akhir dari dunia. Anda bisa menggunakan xsel
teknik seperti yang dijelaskan di bagian terakhir.
:r ! xsel -bo ; read (r) from the stdout of (!) `xsel -bo`
:w ! xsel -b ; write (w) to the stdin of (!) `xsel -b`
Bind combo kunci pasangan dan Anda harus baik.
:%y+
vim, yang merupakan vim-speak untuk "yank (copy) semua baris ke register '+' (PRIMARY
papan klip X )". Anda dapat mengganti%
dengan rentang jika Anda ingin spesifik. Tetapi ada tiga peringatan: 1. Sekarang, Anda harus menyimpan teks apa pun ke file sebelum dapat menyalinnya. Ini berbeda denganxclip
perintah yang disebutkan dalam jawaban. 2. Jika Anda belum tahu cara melakukannya, ini mungkin membosankan. 3. Anda hanya dapat melakukan ini jika fitur tertentu diaktifkan saat mengkompilasi vim. Jika Anda menginstal GVim, itu harus diaktifkan secara default di GUI dan terminal vim.