Emacs'ta bilinen en uzun tuş sırası nedir?


14

Qt, yalnızca dört tuşa kadar Emacs tarzı tuş bağlantılarını destekler . Bu sınırın neden artırılması gerektiğine dikkat çekmek için Emacs tarzı tuş bağlama örneklerini bundan daha fazla tuşla göstermek yararlı olacaktır. Bunun için bilinen örnekler var mı, hatta Emacs tuş haritalarında tanımlanan uzun tuş dizilerini programlı olarak bulmanın bir yolu var mı?

edit: Ben bu ortak bilgi olduğunu düşündüm, ama bir anahtar dizisi tarafından okunduğu gibi bir dizi anahtardır read-key-sequence. Adayınızı deneyin F1 kve emrinizi mi, yoksa ondan önce mi ilginizi çektiğini açıklayın.


Kafamın üstünde düşünebildiğim tek şey terminal kaçış dizilerinden Qt için geçerli olmayan dönüşümler. 3 gerçek anahtarın üstüne çıkmak olağandışıdır.
Gilles 'SO- kötü olmayı bırak'

Sorunun bağlamını / nedenini ve bağlantıyı sağladığınız için teşekkür ederiz. İlk bakışta - okumadan önce, sorunun yanlış bir konu olduğunu ve herkes için yararlı olmadığını tahmin ediyordum.
Drew

Bu sorudaki sorun, kimsenin buna kesin olarak cevap verememesidir. Herkes sadece emacs konfigürasyonu için cevap verebilir. Fikir temelli değil, biraz özneldir.
Tobias

1
Bu önek argümanlarını içeriyor mu? Bin satıra inmek istersem, C-u 1 0 0 0 C-nhangisinin altı anahtar olduğunu söyleyebilirim .
Stig Hemmer

1
@StigHemmer Hayır. Bunun tek başına bir anahtar sıra F1 k C-u 1 0 0 0 C-nolduğunu görün ve görün C-u.
wasamasa

Yanıtlar:


23

Aşağıdaki senaryo ile test ettim,

(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))))))

Ve ben birlikte almak en uzun .emacs.dDİR C-x c C-x r ibazı dümen komutu, ve hangi emacs -qalıyorum C-x a i lkomutu çalıştığı inverse-add-mode-abbrev.


12
Ha. Bana verir C-x M-c M-b u t t e r f l y:) Bunu yaptığımı unutmuştum ...
phils

where-is-internalburada CPU zamanına çok hakim, ancak kısa listeyi daha uzun olana yıkıcı bir şekilde hazırlayarak birkaç döngüyü kolayca tıraş edebilirsiniz (setq keyseqs (nconc (where-is-internal sym nil nil t) keyseqs)).
Basil

1
@phils Referansı tanıyorum, ama tam olarak bu komutu ne yapacak şekilde ayarladınız?
Dan Firelight tarafından Fiddling

@DanNeely, sanırım hiç görmedin M-x butterflymi? Ben daha fazla özgünlük için bu komuta
bağladım

6

Orada bir yerde en uzun ne olabilir hakkında cevap veremem, ama burada yardımcı olabilecek bir bilgi.

  1. Bir önek anahtarına bağladığım bir tuş eşlemesindeki tuşlara bağlı ilgili komutlar kümesi sağlayan bazı kitaplıklar var.

    Ben vs. eş opt kullanıcı tuşları istemiyorum çünkü ben genellikle bağlama altında böyle bir önek anahtarı demek C-xya, için other-windowkomutlar altında C-x 4(tuş eşleme ctl-x-4-map).

  2. Aynı düşünceler böyle bir tuş eşlemesindeki komut grupları için de geçerlidir: bazen kendi tuş eşlemlerini alırlar. Ve böylece, özyineli olarak.

  3. En azından bazı kullanıcıların bu tür herhangi bir tuş eşlemesini (herhangi bir düzeyde) kendi, daha kısa, önek anahtarlarına yeniden bağlamak isteyebileceklerini veya belirli komutları daha kısa tuş dizilerine bağlamak isteyebileceklerini umuyorum. Ama bunu kütüphanenin kendisinde yapmak istemiyorum.

: İşte böyle oldukça uzun anahtarın bir örnek C-x 4 j t . % *(yedi tuş vuruşlarını), komuta bağlı olduğu icicle-bookmark-file-this-dir-all-tags-regexp-other-windowiçinde İmi + .

Anatomi:

  • Açık C-x 4önek tuşu ( ctl-x-4-map).

  • On jiçin tüm komutlar için olan önek anahtarı bir yer imine atlama .

  • Bir tşekilde etiketlenmiş yer imlerine atlamak için kullanılan tüm komutlar için olan önek tuşunda .

  • On .dosyalar için olan imlerine atlama için tüm komutlar için olan önek anahtarı geçerli dizinde olan etiketlenmiş bir şekilde.

  • On %şeyler içindir imlerine atlama için tüm komutlar için olan önek anahtarı geçerli dizinde var etiketleri regexpi maç için istenir.

  • On *şeyler içindir imlerine atlama için tüm komutlar için olan anahtarı geçerli dizinde var etiketleri , TÜM hangi regexpi maç için istenir. (Buna karşılık, etiketleri C-x 4 j t . % +normal ifadeyle eşleşen BAZI yer işaretleri içindir .)

Bunların hepsi bir geleneksel İmi + içinde (ve bazı btw, dired sözleşmeler karşılık gelir): jiçin atlama komutları tiçin etiketli , .için geçerli dizin , %içindir regexp'nin ve *içindir tüm ( +içindir bazı ).


(Oh, ve mkcms en sexp @ kullanarak, benim hemen C-x 4 j t f % *. Eşit uzun olan façılımı dosyasından Bu gibi. C-x 4 j t . % *Ama tamamlanması için aday imleri değil sadece bu geçerli dizinde (dosyalar için tüm dosya imleri vardır .).)


0

Magitseçeneklerin değiştirilmesine izin verdiği için uzun diziler ekler. Örneğin, günlük istediğinde, uzak dallar istiyorsanız ya da istemiyorsanız, dalların grafiksel gösterimini istiyorsanız, vb. Kısa ya da uzun seçenekleri seçebilirsiniz. Bir günlük için temel istek, magit-statusarabellekten sadece birkaç tuş vuruşu olmakla birlikte, daha fazlasını ekleyebilirsiniz.

Aynı işlem, temel bir işlem için iki tuş vuruşu, ancak birçok isteğe bağlı ekleme için de geçerlidir.

Yani soru aşağıda belirtildiği gibi, sadece stock(ne anlama gelirse) emacs düşünüyor musunuz?


1
Bundan çok, her yerden gelen örnekleri kabul ediyorum. Açıkladığınız şey, her tuş dizisinin bir komutu yürütmesiyle bir dizi anahtar dizidir. Bir tuş dizisinin ne olduğu hakkında fikir edinmek için kullanmayı deneyin F1 kve komutu açıklayana kadar kaç tuş yazabileceğinizi görün.
wasamasa
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.