Apa urutan kunci terpanjang yang diketahui dalam Emacs?

14

Qt mendukung ikatan kunci gaya Emacs , namun hanya untuk hingga empat tombol. Untuk menjelaskan mengapa batas ini harus ditingkatkan, akan bermanfaat untuk menunjukkan contoh ikatan kunci gaya Emacs dengan lebih banyak kunci dari itu. Apakah ada contoh yang diketahui untuk ini atau mungkin bahkan cara untuk secara terprogram menemukan urutan kunci panjang yang didefinisikan dalam kartu kunci Emacs?

sunting: Saya pikir ini adalah pengetahuan umum, tetapi urutan kunci adalah serangkaian kunci yang dibaca oleh read-key-sequence. Coba F1 kuntuk kandidat Anda dan lihat apakah itu menggambarkan perintah Anda atau yang tidak terkait sebelumnya.

wasamasa
sumber
Satu-satunya yang dapat saya pikirkan dari atas kepala saya adalah konversi dari urutan pelarian terminal, yang tidak berlaku untuk Qt. Pergi di atas 3 kunci nyata tidak biasa.
Gilles 'SANGAT berhenti menjadi jahat'
Terima kasih telah memberikan konteks / alasan untuk pertanyaan dan tautannya. Pada pandangan pertama - sebelum membacanya, saya salah menebak bahwa pertanyaannya mungkin di luar topik dan tidak membantu bagi siapa pun.
Drew
Masalah dengan pertanyaan ini adalah tidak ada yang bisa menjawabnya dengan pasti. Semua orang bisa menjawabnya hanya untuk konfigurasi emacs-nya. Ini bukan berdasarkan opini tetapi jenis subjektif.
Tobias
1
Apakah ini termasuk argumen awalan? Jika saya ingin turun seribu baris, saya bisa mengatakan C-u 1 0 0 0 C-nyang mana adalah enam kunci.
Stig Hemmer
1
@ StigHemmer No. Lakukan F1 k C-u 1 0 0 0 C-ndan lihat itu C-uadalah urutan kunci sendiri.
wasamasa

Jawaban:

23

Saya diuji dengan skrip berikut,

(key-description
 (car
  (sort
   (let (keyseqs)
     (mapatoms
      (lambda (sym)
        (when (commandp sym)
          (let ((where (where-is-internal sym nil nil t)))
            (when where
              (setq keyseqs (append keyseqs where)))))))
     keyseqs)
   (lambda (a b) (< (length b) (length a))))))

Dan terpanjang saya dapatkan dengan saya .emacs.dyaitu C-x c C-x r iyang beberapa perintah helm, dan dengan emacs -qsaya mendapatkan C-x a i lyang menjalankan perintah inverse-add-mode-abbrev.

mkcms
sumber
12
Ha. Memberi saya C-x M-c M-b u t t e r f l y:) Saya lupa bahwa saya telah melakukan itu ...
phils
where-is-internalsejauh ini mendominasi waktu CPU di sini, tetapi Anda masih dapat dengan mudah mencukur beberapa siklus dengan merusak prabayar daftar yang lebih pendek ke yang lebih lama melalui (setq keyseqs (nconc (where-is-internal sym nil nil t) keyseqs)).
Basil
1
@ phils Saya mengenali referensi, tetapi apa sebenarnya yang Anda tetapkan perintah itu untuk lakukan?
Dan is Fiddling oleh Firelight
@DanNeely, saya kira Anda belum pernah melihat M-x butterfly? Saya hanya mengikatnya pada perintah itu untuk meningkatkan keaslian :)
phils
6

Saya tidak bisa menjawab tentang apa yang paling lama mungkin ada di suatu tempat, tapi di sini ada sedikit info yang mungkin bisa membantu.

  1. Saya memiliki beberapa pustaka yang menyediakan satu set perintah terkait yang terikat pada kunci di dalam tombol yang saya ikat ke kunci awalan.

    Karena saya tidak ingin memilih kunci pengguna dll., Saya biasanya mengikat kunci awalan seperti itu di bawah, katakan C-xatau, untuk other-windowperintah, di bawah C-x 4(keymap ctl-x-4-map).

  2. Pertimbangan yang sama berlaku untuk grup perintah di keymap seperti itu: mereka terkadang mendapatkan keymap mereka sendiri. Dan seterusnya, secara rekursif.

  3. Saya berharap bahwa setidaknya beberapa pengguna mungkin ingin mem-rebind keymaps semacam itu (pada level apa pun) ke kunci awalan mereka sendiri, lebih pendek, atau mereka mungkin ingin mengikat perintah tertentu ke urutan kunci yang lebih pendek. Tapi saya tidak ingin melakukannya di perpustakaan itu sendiri, jelas.

Berikut adalah contoh dari salah satu kunci yang cukup panjang: C-x 4 j t . % *(tujuh penekanan tombol), yang terikat pada perintah icicle-bookmark-file-this-dir-all-tags-regexp-other-windowdi Bookmark + .

Ilmu urai:

  • Pada tombol C-x 4awalan ( ctl-x-4-map).

  • Pada tombol jawalan, yang untuk semua perintah untuk melompat ke bookmark .

  • Pada tkunci awalan, yang untuk semua perintah untuk melompat ke penanda yang ditandai dalam beberapa cara.

  • Pada .kunci awalan, yang untuk semua perintah untuk melompat ke bookmark yang untuk file di direktori saat ini yang ditandai dalam beberapa cara.

  • Pada %kunci awalan, yang untuk semua perintah untuk melompat ke penanda yang untuk hal-hal di direktori saat ini yang memiliki tag yang cocok dengan regexp Anda diminta.

  • Pada *tombol, yang untuk semua perintah untuk melompat ke penanda yang untuk hal-hal di direktori saat ini yang memiliki tag , SEMUA yang cocok dengan regexp Anda diminta. (Sebaliknya, C-x 4 j t . % +untuk bookmark BEBERAPA dari tag yang cocok dengan regexp.)

Semua itu konvensional di Bookmark + (dan beberapa sesuai dengan konvensi Dired, BTW): jadalah untuk perintah lompat , tuntuk tag , .untuk direktori-saat ini , %untuk regexp , dan *untuk semua ( +untuk beberapa ).


(Oh, dan menggunakan sexp @ mkcms, saya dapatkan C-x 4 j t f % *, yang sama panjangnya. fSingkatan dari file . Seperti C-x 4 j t . % *, tetapi bookmark kandidat untuk penyelesaian adalah semua penanda file, bukan hanya untuk file di direktori saat ini ( .).)

Drew
sumber
0

Magitmenambahkan urutan panjang karena memungkinkan opsi untuk beralih. Misalnya ketika Anda meminta log, Anda dapat memilih opsi pendek atau panjang, jika Anda ingin cabang jarak jauh atau tidak, jika Anda ingin tampilan grafis cabang dan sebagainya. Permintaan dasar untuk log hanyalah beberapa penekanan tombol dari magit-statusbuffer tetapi Anda dapat menambahkan lebih banyak lagi.

Hal yang sama berlaku untuk komit, dua penekanan tombol untuk komit dasar, tetapi banyak tambahan opsional.

Jadi pertanyaannya belum ditentukan, apakah Anda hanya mempertimbangkan stockemacs (apa pun artinya)?

icarus
sumber
1
Jauh dari itu, saya menerima contoh yang datang dari mana saja. Apa yang Anda gambarkan adalah serangkaian urutan kunci, dengan setiap urutan kunci menjalankan satu perintah. Untuk mendapatkan gambaran tentang urutan tombol, coba gunakan F1 kdan lihat berapa banyak tombol yang dapat Anda ketik hingga menjelaskan perintahnya.
wasamasa