Bagaimana cara menyalin teks dari baris perintah ke clipboard tanpa menggunakan mouse?

10

Saya mencoba mencari cara untuk menyalin teks saat ini di baris perintah ke clipboard TANPA menyentuh mouse. Dengan kata lain, saya perlu memilih teks dengan keyboard saja. Saya menemukan solusi setengah jalan yang dapat mengarah pada solusi lengkap:

Ctrl+a - pindah ke awal garis.

Ctrl+k - memotong seluruh baris.

Ctrl+y - menarik kembali potongan teks.

Atau saya juga bisa menggunakan Ctrl+uuntuk melakukan 2 langkah pertama.

Ini tentu saja berhasil, tapi saya mencoba mencari tahu di mana tepatnya teks yang dipotong disimpan. Apakah ada cara untuk mengaksesnya tanpa menggunakan Ctrl+y? Aku sadar xclipdan aku bahkan menggunakannya untuk pipa teks langsung ke clipboard, jadi aku berpikir tentang pipa data yang disimpan oleh Ctrl+kuntuk xclip, tetapi tidak yakin bagaimana melakukannya.

Metode yang saya dapatkan sejauh ini adalah menulis skrip yang digunakan xdotooluntuk menambahkan echoke awal baris dan | zxcke akhir baris, dan kemudian klik enter ( zxcmenjadi alias kustom yang pada dasarnya pipa ke xclip). Ini juga berfungsi, tetapi itu bukan solusi yang benar-benar "bersih".

Saya menggunakan Cshell jika itu membuat perbedaan.

EDIT: Saya tidak ingin menggunakan screensebagai solusi, lupa menyebutkannya.

Terima kasih!

Sancho Pancho
sumber
Tidak terkait, tetapi juga baik untuk diketahui: Shift-Ins menempelkan seleksi dalam xterm, jika Anda tidak hanya ingin memotong teks, tetapi menempel juga.
dirkt

Jawaban:

7

Jika menggunakan xtermatau turunannya, Anda dapat mengatur binding kunci untuk memulai dan mengakhiri pemilihan teks, dan menyimpannya sebagai pilihan utama X11 atau cutbuffer. Lihat man xterm. Misalnya, tambahkan ke ~/.Xdefaults:

XTerm*VT100.Translations: #override\n\
    <Key>KP_1: select-cursor-start() \
            select-cursor-end(PRIMARY, CUT_BUFFER0)\n\
    <Key>KP_2: start-cursor-extend() \
            select-cursor-end(PRIMARY, CUT_BUFFER0)\n

Anda hanya dapat memiliki satu XTerm*VT100.Translationsentri. Perbarui server X11 dengan konten file baru dengan xrdb -merge ~/.Xdefaults. Mulai yang baru xterm.

Sekarang ketika Anda memiliki beberapa input pada prompt perintah, mengetik 1pada keypad numerik akan mulai memilih teks pada posisi kursor teks saat ini, seperti halnya tombol 1 pada mouse. Pindahkan kursor dengan tombol panah kemudian tekan 2pada keypad numerik dan teks intervensi disorot dan disalin ke pemilihan utama dan cutbuffer0. Jelas kunci dan tindakan lain yang lebih cocok dapat dipilih. Anda juga dapat menempelkan seleksi dengan binding seperti insert-selection(PRIMARY).

meuh
sumber
Ini bagus! Saya tidak tahu Anda bisa melakukan ini. Sangat membantu! Apakah mungkin menggunakannya di konsole?
Sancho Pancho
2
Saya telah melihat sekilas pada manual konsole tetapi tidak menyebutkan kontrol semacam ini. Sepertinya Anda tidak akan menemukan ini di sebagian besar emulator terminal karena mereka lebih suka memberikan pengaturan yang lebih mudah dikelola melalui menu dan dialog.
meuh
Sumber translationsdaya adalah fitur X Toolkit yang disinggung di sana-sini yang tidak memiliki padanan dalam toolkit lain. Namun Anda dapat beralih di antara set terjemahan menggunakan keymapfitur (mencatat komentar tentang "Anda hanya dapat memilikinya").
Thomas Dickey
Terima kasih atas semua komentarnya. Namun masih tidak mengetahui tentang clipboard ctrl-k / ctrl-y, apakah ada yang tahu cara mengaksesnya atau di mana sebenarnya menyimpan teks yang dipotong?
Sancho Pancho
@SanchoPancho Bergantung pada csh Anda, ini mengimplementasikan kill-ring internal yang membuat teks terpotong dan mengembalikannya dengan binding yank dan yank-pop. Saya rasa Anda tidak memiliki akses lain ke cincin ini. lihat man csh .
meuh