Memilih teks di terminal tanpa menggunakan mouse

68

Saya akan menekan enter untuk menjalankan perintah di terminal, tetapi sebelum melakukan itu, saya ingin menyalin perintah ke clipboard tanpa menggunakan mouse.

Bagaimana?

Jika Anda berada di tempat lain selain terminal, Ctrl+ Homemelakukannya.

Apakah ada cara untuk secara acak memilih teks seperti itu di terminal?

Diedit:

  • berasumsi bahwa menggunakan program lain seperti screenbukanlah alternatif yang baik
  • teks akan ditempelkan di luar terminal, jadi Ctrl+ ydan urutan yang sama tidak menyelesaikannya juga
Strapakowsky
sumber
1
Maksud Anda Ctrl-Shift-Home?
Mekanik keong
Salin Shift-Home ke awal baris. Ctrl-Shift-Home menyalin ke awal halaman.
Strapakowsky
Shift-Home dan Ctrl-Shift-Home melakukan hal yang sama untuk saya (lompat ke awal terminal) dan tak satu pun dari mereka tampaknya menyalin apa pun yang akan ditampilkan oleh Ctrl-Y atau Ctrl-Shift-V (atau pilih). Tapi itu berfungsi di editor teks, bukan menyalin, hanya memilih. Menggunakan OpenSUSE Leap 15 di Virtual Box. Semua pengikat kunci lain yang disebutkan dalam jawaban berfungsi.
Brambor

Jawaban:

16

Bind shortcut berikut:

bind '"\C-p": "\C-e\C-u xsel <<"EOF"\n\C-y\nEOF\n\C-y"'

Sekarang setelah menggunakan Crtl+ Pbaris Anda akan disalin ke clipboard. Anda dapat menempelkannya di terminal menggunakan:

xsel

Dan ke aplikasi X apa pun menggunakan tombol tengah mouse atau Shift+ Insert.

Nykakin
sumber
saya ingin menghindari menggunakan mouse. Apakah mungkin untuk menempelkannya dengan ctrl + shift + v alih-alih tombol tengah mouse?
MrGigu
@ MrGigu, ini menggunakan clipboard yang berbeda (lihat di sini ). Anda perlu menggunakan cara pintas lainnya. Secara default seharusnya Shift + Insert (lihat di sini )
Nykakin
Oh terima kasih, shift + insert works akan berhasil! tidak tahu Anda bisa menempel dengan perintah ini.
MrGigu
Adakah penjelasan tentang apa yang sebenarnya terjadi di sini?
Alexander
Atau gunakan xsel -buntuk menggunakan clipboard standar, yaitu yang menggunakan Ctrl + V / Ctrl + Shift + V. Juga perlu dicatat bahwa metode ini gagal pada perintah multi-line.
wjandrea
27

Jika Anda menggunakan salah satu shell yang memahami kunci emacs (bash, csh, dll.) Maka Anda dapat menyalin perintah saat ini dengan:

  1. control-A akan membawa Anda ke awal baris.

  2. control-K akan membunuh seluruh baris yang baru saja Anda masukkan.

  3. control-Y akan menarik kembali teks.

Kemudian nanti Anda dapat control-Ymenarik kembali teks untuk memasukkan teks kembali sebagai input ke editor baris perintah shell.

Lihat man bashdan kemudian ketika muncul, ketik /emacsdiikuti oleh beberapa n(berikutnya) untuk memajukan Anda ke bagian READLINE.

ElderDelp
sumber
Saya tahu itu tetapi ingin menempel di luar terminal. Diedit untuk klarifikasi.
Strapakowsky
3
control-Udapat memotong perintah dari akhir secara langsung
vstepaniuk
1
Perintah ke-2 mengubah hidup saya.
krishna
10

Yang paling dekat yang bisa saya pikirkan adalah Ctrl+ u, Ctrl+ y
Ini akan menghapus dari kursor ke awal baris, lalu tempel dari buffer readline. Ini tidak persis sama dengan clipboard, tetapi Anda dapat menempel di dalam shell, jika itu yang Anda butuhkan.

pendiam
sumber
Saya tahu itu tetapi ingin menempel di luar terminal. Diedit untuk klarifikasi.
Strapakowsky
8

Ada program yang disebut layar. Ini menciptakan sistem windowing teks yang memungkinkan Anda untuk beralih di antara beberapa instance. Tetapi juga memungkinkan Anda untuk memilih teks.

sudo apt-get install screen

Perintah itu menginstalnya.

Kemudian ketik screen

Anda menggunakan ctr-a untuk memulai urutan perintah. Kemudian tekan esc dan kursor Anda akan bergerak ke segala arah. Tekan enter untuk memulai pemilihan teks, pindah ke titik akhir, tekan enter lagi. Itu akan menyalin ke buffer.

Kemudian ctr-a dan kemudian} akan menempel

Lebih detail tentang perintah lain di sini http://www.kuro5hin.org/story/2004/3/9/16838/14935

Meer Borg
sumber
Saran yang bagus, tapi saya tidak suka screenkarena alasan yang berbeda, jadi anggap terminal Ubuntu biasa. Mengedit pertanyaan saya untuk klarifikasi.
Strapakowsky
1
Ini harus ditandai sebagai jawaban IMHO yang benar.
eddiewould
2

Jika Anda berada di dalam vim, Anda dapat secara visual memilih satu atau lebih garis dengan Shift+ vdan kemudian menggunakan penjilidan, misalnya yy, untuk menyalurkan pilihan ke xclip .

Tambahkan penjilidan ke vimrc Anda:

vnoremap yy :w !xclip -selection clipboard<CR><CR>

Ini membutuhkan xclip untuk diinstal, ia berada di repositori aptitude Debian / Ubuntu.

xclipmenyimpan stdin, dengan -selection clipboardopsi itu juga mendorong stdin ke clipboard sistem.

Jadi, Anda juga dapat menggunakan xclipcara generik dari terminal, misalnya untuk menyalin seluruh file ke clipboard sistem:

cat myfile | xclip -selection clipboard

Jika Anda juga bisa membuat alias, seperti:

alias cb="xclip -selection clipboard" 
Keris
sumber