gtk-key-theme Emacs: apa keystroke untuk select-all?

22

Saya lebih suka penekanan tombol emacs, tapi pilih-semua tampaknya tidak menjadi bagian dari kosakata emacs, atau setidaknya, gtk-key-theme untuk emacs. Mw tidak berfungsi untuk menyalin wilayah yang dipilih.

  1. Apa keystroke untuk select-all?
  2. Di mana peta pengikat utama untuk tema ini?

Terima kasih, Steve

Chelmite
sumber

Jawaban:

22

Ada adalah sederhana mengikat untuk "Pilih semua" di gtk:C-/

Ini didefinisikan sebagai sinyal GtkTextView umum dan tidak secara khusus bagian dari tema kunci emacs. Tapi itu berfungsi baik dengan itu. Ini didefinisikan sebagai alternatif C-a. Sementara yang terakhir akan ditafsirkan kembali oleh tema emacs C-/tetap berlaku untuk "Pilih semua".

Pemenang
sumber
Jawaban yang bagus Mengapa belum ada upvotes?
Rörd
7

Tidak ada jalan pintas tunggal untuk melakukannya secara langsung.

Anda dapat pergi ke akhir teks dengan Ctrl- edan menghapus satu baris Ctrl- u. Namun, ini hanya bekerja dengan GtkEntry, yaitu, bidang input satu baris.

Jika Anda perlu memilih semuanya dalam GtkTextView, multi-line editor-like control, Anda harus melakukan yang berat Ctrl- Homediikuti oleh Ctrl+ Shift- End, yang, dengan keyboard 63-kunci saya hampir tidak mungkin.

Jika, karena alasan yang baik untuk mengedit efisiensi atau keterbatasan keyboard perangkat seluler, Homedan Endtidak terjangkau, maka Anda harus bertahan. Memilih "Select-all" dari menu "Edit" adalah ide yang buruk, karena memetakan ke Alt- e- adi firefox, Alt- e- tdi gedit, Alt- e- sdi OpenOffice (bahkan dengan integrasi gnome), di setiap perangkat lunak kunci yang berbeda, dan dalam beberapa perangkat lunak, tidak ada "Select-all" di Menu Edit, seperti kromium, dan dalam beberapa perangkat lunak, bahkan tidak ada Menu Edit itu sendiri, bahkan tidak ada yang tersembunyi untuk dipanggil dengan Alt-e, seperti nautilus. Ketidakkonsistenan ini mengalahkan tujuan dari bilah menu yang diaktifkan-Alt, dan bukan sistem operasi apa pun, bahkan Windows, tidak konsisten. Bahkan menu klik kanan tidak memiliki pintasan tetap untuk "Select-All" - biasanya atetapi dapat tdari aplikasi ke aplikasi. Meminta perbaikan bug di setiap perangkat lunak individu hanya dapat dilakukan dengan proyek-meta seperti GNOME, tetapi mengetahui GNOME sendiri menghasilkan beberapa masalah ini (penghapusan Menu Edit di 'nautilus' adalah keputusan GNOME 3) benar-benar tidak meninggalkan banyak harapan.

Di samping catatan, Ctrl- Homeadalah satu-satunya jalan pintas untuk pindah ke awal semua teks, bahkan dapat mengganggu pekerjaan Anda untuk memasukkan perangkat seluler keyboard kecil.

Jawabannya selesai di sini. Untuk pikiran yang ingin tahu saya punya informasi tambahan:


Pengguna emac yang berpengalaman akan mencoba Ctrl- x- h: emacs asli memang, tetapi tidak ada urutan kunci kontrol yang dipahami oleh mode emacs gtk3. Bahkan, hanya segelintir pintasan emacs yang ditentukan - Intip /usr/share/themes/Emacs/gtk-3.0/gtk-keys.css; ada cukup ruang pada stiker untuk menuliskan semua pintasan emacs yang didukung.

Untuk membuat situasi lebih buruk, sulit untuk memindahkan tombol pintas untuk tujuan ini. Seperti yang Anda tahu, Ctrl- adiambil oleh emacs. Tetapi bahkan Hispanophones, grup berbahasa non-Inggris terbesar (dikecualikan dari Cina karena kami menggunakan ideograf), yang terbiasa memilih semuanya dengan Ctrl- e, akan menemukan bahwa pintasan keyboard juga diambil oleh emacs. Tidak termasuk e, tidak ada tombol lain yang tersisa di bagian kiri keyboard QWERTY tanpa tujuan yang sudah diterima dengan baik. Google Terjemahan mengambil kunci SHIFT, ketika ditekan sendirian, sebagai 'pilih-semua', tetapi perangkat lunak lain atau produk Google lainnya tidak mengikuti pengaturan.

Untuk mengosongkan baris, gunakan Ctrl- u. Ini memiliki keuntungan karena tidak menimpa X SELECTION (yang Anda tarik dengan tombol tengah mouse). Ini adalah pengaturan unik hanya dari mode emacs gtk3: di emacs nyata ia tidak melakukan apa-apa sendiri; di readline (bash, mysql dll) ia seharusnya menghapus semuanya dari kursor hingga awal baris, sementara bagian Ctrl- klawannya - menghapus semuanya dari kursor hingga akhir baris.

Beberapa mungkin menyarankan Anda meninggalkan tanda di suatu tempat untuk pemilihan acak dengan keyboard. Anda juga dapat menemukan Ctrl- SPACEdalam mode emacs yang dikonfigurasi untuk mengatur jangkar pada teks. Meskipun bertentangan dengan banyak perangkat lunak lain (khususnya metode input ideograf, dan pelengkapan otomatis di beberapa perangkat lunak editor lainnya), tidak ada tombol pintas untuk memanfaatkan jangkar yang Anda atur.


Ubuntu tidak secara resmi mendukung mode pengeditan emacs, atau konfigurasi UI lainnya yang tidak dapat dilakukan dengan UI. Laporan bug tentang kebutuhan tersebut ditandai dengan prioritas rendah. Untuk alasan ini saya pikir yang terbaik adalah mengajukan pertanyaan seperti itu ke tempat-tempat umum Linux, misalnya superuser.

Zhang Weiwu
sumber
2

Binding emacs ditentukan di /usr/share/themes/Emacs/gtk-2.0-key/gtkrc Anda juga dapat menambahkan binding di ~ / .config / gtk-3.0 / gtk.css

Pilih semua akan menjadi seperti ini:

bind "<ctrl>h" { "move-cursor" (buffer-ends, -1, 0)
                 "move-cursor" (buffer-ends,  1, 1) };

Saya belum menemukan cara untuk mengikatnya ke Cx h, meskipun.

emacser
sumber
2

Lihat pengikatan kunci yang ada

Untuk aplikasi GTK3, Anda dapat melihat binding dari tema kunci Emacs GTK - baik secara lokal, mungkin di /usr/share/themes/Emacs/gtk-3.0/gtk-keys.css) - atau pada repositori git GTK di GitHub (yang tidak harus sama dengan file lokal Anda, karena distro Anda mungkin telah mengubahnya) .

Saat membaca file ini, Anda harus menyadari arti dari widget tersebut

(Lihat gambar di bagian atas setiap situs yang ditautkan.)

Menambahkan ikatan kunci untuk memilih semua

select-alluntuk GtkTreeViewdanGtkTextView

Untuk GtkTreeViewdan GtkTextViewwidget, ada sinyal yang disebut select-all. Anda harus memberikan argumen 1agar memilih semua daripada membatalkan pilihan.

Jadi, edit ~/.config/gtk-3.0/gtk.cssdan tambahkan sesuatu seperti ini:

@binding-set my-text-and-tree-view-bindings
{
    bind "<alt>a"
    {
    "select-all" (1)
    };
}

textview {
  -gtk-key-bindings: my-text-and-tree-view-bindings;
}

treeview {
  -gtk-key-bindings: my-text-and-tree-view-bindings;
}

GtkEntry

Karena GtkEntrytidak ada select-allsinyal. Sebagai gantinya, Anda dapat menggunakan urutan dua move-cursorsinyal yang menandai teks.

Sekali lagi, edit ~/.config/gtk-3.0/gtk.cssdan tambahkan sesuatu seperti ini:

@binding-set my-entry-bindings
{
    bind "<alt>a"
    {
    "move-cursor" (paragraph-ends, -1, 0)
    "move-cursor" (paragraph-ends,  1, 1)
    };
}

entry {
  -gtk-key-bindings: my-entry-bindings;
}

Firefox

Omong-omong, di Firefox Alt- apilih semua untuk saya secara default tanpa konfigurasi (menggunakan tema kunci Emacs GTK).

Mekeor Melire
sumber
1

Jika Anda ingin memilih semua teks di suatu wilayah, saya lebih suka mendefinisikan Makro sederhana untuk itu. Tekan F3 untuk mulai menulis Makro. Kemudian ketik

Esc - <          // goes to beginning of document
Ctrl - spacebar  // set mark
Esc - >          // selects all till end of document

Kemudian gunakan M -w untuk menyalin (yang biasanya saya lakukan untuk menyalin dari sistem remote unix ke Windows lokal) dan kemudian tekan F4 untuk menyelesaikan definisi makro.

Sekarang Anda sudah selesai mendefinisikan Makro, tekan saja F4 sebanyak yang Anda ingin mengulangi tindakan.

Prashanth R
sumber
Tema utama GTK Emacs tidak sama dengan Emacs sendiri. Hampir tidak ada ikatan utama dalam jawaban Anda yang berfungsi di sana (dan jika Anda benar-benar berada di Emacs sendiri, Anda bisa menggunakan Cx h sebagai ganti makro.
Rörd