Membuat Ctrl + C menyalin teks di terminal gnome?

70

Apakah mungkin bagi saya untuk membuat Ctrl+ Cmelakukan perintah salin jika ada teks yang disorot di terminal?
Kalau tidak, ia harus mempertahankan perilaku normalnya.

(Jika ada terminal yang bisa melakukan ini selain terminal gnome, itu mungkin baik-baik saja.)

Mehrdad
sumber
1
Anda tidak harus menggunakan mouse; pada keyboard Mac Anda dapat menggunakan shift+ enter+ fn. Dan, pada keyboard 'normal', saya pikir itu shiftdan insert.
David Thomas
Saya mengkonfirmasi. Saya hanya menggunakan campuran lain dari copy-fu pada keyboard 'normal': Ctrl + Insert for copy (dan Shift + Insert for paste) yang tidak bertentangan dengan program interupsi Ctrl + C
kza

Jawaban:

74

Anda dapat mengubah Kombinasi tombol untuk Cut dan Paste dari default Ctrl+ Shift+ C, Ctrl+ Shift+ Vuntuk apa yang Anda katakan, yaitu Ctrl+ C, Ctrl+ V, di Edit → Keyboard Shortcuts menu. Meskipun Anda juga harus mengubah makna terminal default yang terkait dengan Ctrl+ C(interupsi), misalnya dengan cara ini

stty intr ^J

(Saya memilih Ctrl+ Jkarena saya tidak ingat itu terkait dengan beberapa tindakan, tetapi Anda dapat membuat pilihan sendiri.)

Saya tidak berpikir mungkin untuk mempertahankan tindakan interupsi default untuk Ctrl+ Chanya ketika tidak ada teks yang disorot.

enzotib
sumber
1
Seperti dicatat oleh @Pithikos dalam jawaban mangoDrunk, setelah memetakan kembali shortcut Copy ke Ctrl + C, Anda dapat menggunakan Ctrl + Shift + C untuk menyela tanpa harus mengkonfigurasi hal lain.
dubrox
1
Saya atur ke ^ Q karena itu biasanya "unfreeze / start" yang jarang digunakan, berbahaya dan lebih dekat ke CTRL. Jika seseorang memutuskan untuk melakukan ini juga, mereka tidak boleh lupa untuk memetakan kembali "mulai" seperti: stty start ^ J
k3a
Perhatikan bahwa tidak mungkin untuk mengaturnya ke kombinasi yang melibatkan Shift menggunakan stty. (Saya telah mengaturnya ke ^ X, karena 'memotong' tidak masuk akal di sini.)
Evgeni Sergeev
39

Ctrl+ Csudah ditugaskan untuk perintah lain, yaitu perintah yang mengganggu program yang sedang berjalan di terminal. Misalnya, ping www.google.com akan mulai melakukan ping ke Google hingga Anda memintanya untuk berhenti. Cara Anda melakukannya, adalah dengan menekan Ctrl+C

Jadi, mereka tidak bisa begitu saja mengubah penugasan kombinasi itu.

Sorot teks yang ingin Anda salin, tekan Ctrl+ Shift+ Cdan itu disalin ke clipboard. Ctrl+ Shift+ Vdan Anda tempel.

Beri tahu saya jika itu tidak berhasil ...

Dan
sumber
16
Daripada mengatakan bahwa keybindings tersebut memiliki makna khusus lainnya di terminal, mungkin lebih tepat untuk mengatakan bahwa berbagai aplikasi konsol berharap dapat menggunakannya, jadi jika emulator terminal tidak meneruskannya, itu mungkin membuat aplikasi tersebut tidak dapat digunakan. .
James Henstridge
6
OS X sedikit lebih pintar: ketika beberapa teks dipilih itu diartikan Ctrl+Csebagai salinan dan ketika tidak ada teks dipilih itu menafsirkannya sebagai interupsi.
Behrang
5
Sebenarnya, OS X tidak lebih pintar. Pintasan keyboard salin adalah Cmd-C, bukan Ctrl-C.
Andrei Maxim
28

Terlepas dari apa yang dikatakan @Dan, ada opsi lain untuk menyalin-menempelkan teks di Linux yang saya temukan jauh lebih cepat dan lebih mudah digunakan, karena tidak perlu beralih dari mouse (yang Anda gunakan untuk membuat pilihan) ke keyboard :

  • memilih teks dengan mouse untuk menyalinnya ke clipboard
  • klik tengah pasta itu.

Fitur ini sangat berguna di terminal, misalnya ketika menyusun perintah dari bit teks yang sudah ada di layar.

Ini berfungsi di semua aplikasi, jadi dimungkinkan untuk menyalin-menempelkan teks dari halaman web ke terminal dll.

Buffer clipboard yang digunakan untuk copy-paste klik-tengah terpisah dari yang digunakan untuk Ctrl-C / Ctrl-V, yang memungkinkan untuk memiliki dua bit teks yang berbeda disalin pada saat yang sama.

Sergey
sumber
25

Seperti yang telah dicatat, Ctrl+ Cbiasanya digunakan untuk mengganggu suatu program. Tetapi alih-alih menggunakan Ctrl+ Shift+ Cuntuk menyalin, yang saya lakukan jauh lebih sering daripada mengganggu proses, saya mengubah pengaturan untuk Ctrl+ Cuntuk menyalin dan Ctrl+ Shift+ Cuntuk mengganggu.

Anda dapat melakukan ini di Terminal GNOME dengan pergi ke "Edit" -> "Pintasan Keyboard ..." dan memetakan tindakan "Salin" ke Ctrl+ Cdan "Tempel" ke Ctrl+ V. Perintah interrupt akan secara otomatis dipetakan kembali ke Ctrl+ Shift+ C.

mangoDrunk
sumber
1
Tapi bagaimana cara memetakan Ctrl + Shift + C untuk mengganggu proses?
kramer65
11
Itu terjadi secara otomatis untuk saya. Yang saya lakukan adalah mengatur Copy ke Ctrl + C dan setelah menyimpan itu, Ctrl + Shift + C menjadi interupsi.
mangoDrunk
1
@mangoDrunk alasannya adalah bahwa memegang Shift + Ctrl + <key>dasarnya mencetak karakter yang sama dengan Ctrl + <key>. Anda dapat menguji denganread
Pithikos
Saya menyarankan melakukan ini karena saya menyalin BANYAK lebih dari saya mengganggu proses dan mudah untuk mengingat ctrl + shift + C sebagai interupsi daripada mengubah kebiasaan saya menyalin yang sama di tempat lain.
terbang setelah
3

Agar cut and paste ( Ctrl+ V, Ctrl+ C) berfungsi di konsol atau terminal, masukkan kode berikut ke terminal untuk mengubah binding kunci secara otomatis:

gconftool-2 -t str -s /apps/gnome-terminal/keybindings/copy "<Control>c"

gconftool-2 -t str -s /apps/gnome-terminal/keybindings/paste "<Control>v"
pengguna165696
sumber
1

Maaf untuk menulis jawaban tentang ini, sepertinya saya menghabiskan terlalu banyak reputasi saya untuk hadiah karena dapat mengirim komentar.

Tidak ada cara untuk mengubah perilaku pintasan keyboard tergantung pada apakah ada pilihan teks atau tidak, dan saya akan menghindari penugasan ulang terminal Ctrl-C.

TAPI, Anda dapat dengan mudah terbiasa

  • Ctrl+ Insuntuk menyalin
  • Shift+ Insuntuk menempel

Ini bekerja praktis di mana-mana (kecuali di Nautilus , desah), dan hampir tidak pernah mengganggu apa pun!

Walter Tross
sumber
1

Apakah seseorang ingin Anda dapat menggunakan:

> stty intr ^K         # free Ctrl+C for copy use Ctrl+K instead
> stty lnext ^-        # free Ctrl+V for paste use ^- instead
> stty -g
> stty -g > ~/.stty    # store the settings in home directory

Tambahkan yang berikut ke ~/.bashrc

case $- in
 *i*)
   stty `cat ~/.stty`     #  reload the stored stty settings
   bind -u quoted-insert  #  unbind the quoted-insert function of bash - free Ctrl+V for paste
esac

Dan kemudian gconf editor atau semacam itu untuk mengubah terminal keybindings ke CTRL+ Cuntuk Salin dan CTRL+ Vuntuk tempel.

Sandip Chitale
sumber
Argh ... pemformatan menjadi kacau. Lihat: sandipchitale.blogspot.com/2008/10/…
Sandip Chitale
1

di Lxterminal (terminal default di Lxde), Anda dapat menyesuaikan pintasan sepenuhnya:

masukkan deskripsi gambar di sini

Woeitg
sumber
0

Saya pikir Anda tidak bisa karena di terminal gnome Ctrl+ C, Ctrl+ X, Ctrl+ Vtidak berfungsi. Untuk memotong, menyalin, dan menempel, Anda harus menyorot teks, klik kanan dan pilih tindakan yang ingin Anda lakukan

pengguna21857
sumber
Anda masih dapat menggunakan pintasan untuk memotong di terminal ini adalah ctrl + shift + c (copy) dan ctrl + shift + v (paste) dan ctrl + shift + x.
Rens
0

Seperti yang sudah dinyatakan, Ctrl-C tidak akan berfungsi karena penggunaan interupsi, tapi saya baru saja menemukan cara yang bekerja untuk saya. Tujuan saya adalah memiliki hanya dua tombol, bukan tiga, dan lebih disukai sesuatu yang biasa saya gunakan, dan tidak terlalu merepotkan pada keyboard. Keyboard yang saya miliki di kotak Linux saya memiliki kunci "Windows", di tempat yang sama dengan tombol Command pada Mac. Jadi saya hanya pergi ke Edit> Keyboard Shortcuts, ketika saya mengubah shortcut untuk menggunakan tombol ini, katanya Super + C dan Super + V. Saya kadang-kadang menggunakan Mac juga, jadi ini mudah digunakan.

foraker
sumber