Bir emacs komut adı verildiğinde, tuş bağlamalarını nasıl bulursunuz? (ve tersi)


107

Bir emacs komut adını biliyorsam, "goto-line" der; bu komuta bağlı herhangi bir tuş dizisi olup olmadığını sorgulamak istersem ne olur?

Ve bunun tersi, bir anahtar dizisi verildiğinde, komut adını nasıl bulabilirim?

Yanıtlar:


159

Bir komutun yalnızca anahtar bağlamalarını bulmak için emacs yardımının "nerede" özelliğini kullanabilirsiniz.

C-h w command-name

Komut için birden fazla bağlama ayarlanmışsa, bunların tümü listelenecektir.

Tersi için, bir tuş dizisi verildiğinde, yazabilirsiniz

C-h k key-sequence

Çalıştıracak komutu almak için.

Bir komut hakkında ayrıntılı bilgi, ayrıca tanımlanmış herhangi bir etkileşimli olmayan işlev yazarak alabilirsiniz.

C-h f function-name

Bu, size bir işlevle ilgili tüm anahtar bağlamaları dahil olmak üzere ayrıntılı bilgi verir ve

C-h v variable-name

size herhangi bir (bağlı) değişken hakkında bilgi verecektir. Anahtar haritaları değişkenlerde tutulur, ancak anahtar kodları ham formatta saklanır. C-h v isearch-mode-mapBir örnek deneyin .

Yardım alma konusunda daha fazla yardım için yazabilirsiniz

C-h ?


51
Ayrıca C-h w <function name>, tüm belgelerin değil, anahtarın nerede olduğunu bilmek için de yapabilirsiniz . Tersine, C-h c <key sequence>hangi işlevin bir tuş dizisine bağlı olduğunu bilmek için de yapabilirsiniz .
ShreevatsaR

7
ayrıca: Ch w tipik olarak nerede olduğuna bağlıdır.
Cheeso

2
Böylece, Ch w'yi unuttuğumda nerede-nerede-olabilirim. Bu harika ! ;)
Sake

1
C-hPencere yöneticilerinde başka bir şeye bağlı olanlar için: C-h wile eşdeğerdir M-x where-is. C-h keşdeğerdir M-x describe-key. C-h feşdeğerdir M-x describe-function. C-h veşdeğerdir M-x describe-variable. C-h ?eşdeğerdir M-x help-for-help. Ayrıca f1bunun yerine kullanılabileceğini unutmayın C-h.
Ricardo

13

C-h w(veya F1-w): where-isRET bazı komut isimleri RET

Tam istediğiniz şeyi yapar - ek bilgi içermeyen bağlı anahtarları listeler. :)


13

Bir klavye kısayoluna (veya Emacs terimlerindeki bir tuş dizisine) bağlı komutu etkileşimli olarak almak için seçilen yanıta bakın.

Belirli bir tuş dizisine bağlı komutu programlı olarak almak için , bir tuş dizisini alan ve bağlı komutunu döndüren key-bindingveya işlevini lookup-keykullanın. Fonksiyonu key-bindingnedir C-h kkullanır.

(key-binding (kbd "C-h m"))

bağlı komutu verir C-h mtüm güncel keymaps arama yaparak. İşlev lookup-key, tek bir tuş eşlemesinde arar:

(lookup-key (current-global-map) (kbd "TAB")) ; => indent-for-tab-command
(lookup-key org-mode-map (kbd "TAB")) ; => org-cycle
(lookup-key text-mode-map (kbd "TAB")) ; => nil
(lookup-key isearch-mode-map (kbd "TAB")) ; => isearch-printing-char

Belirli bir komuta bağlı tüm tuş dizilerini programlı olarak elde etmek için where-is-internal, muhtemelen kullanılacak işlevdir. İle biten işlevin adı internalEmacs kullanıcılarının init dosyalarında kullanmalarının olmadığını gösteriyor gibi görünüyor, ancak bir docstring'e sahip bu işlev aksini öneriyor gibi görünüyor. Kullanmayı düşünen herkes where-is-internalönce anahtarları yeniden eşleyip eşleştirmediğini kontrol etmelidir yerine hedeflerine ulaşamayacağını .

Belirli bir komuta (örneğin forward-char) bağlı anahtarları bulmanın bir alternatifi substitute-command-keys(örneğin (substitute-command-keys "\\[forward-char]")) 'dir. Bu özellikle büyük metinlerde kullanışlıdır.


Belgelerine bakmak, where-is-internalonu kullanmanın uygun olduğunu gösteriyor. Ayrıca, geleneksel where-is--internalolarak "özel" işlevler için (çift tireye dikkat edin) gibi bir biçim kullanırız .
GergelyPolonkai

2
Son ekin kullanımı -internalburada açıklanmıştır: gnu.org/software/emacs/manual/html_node/elisp/… . Dahili C işlevleri için kullanılmalıdır.
Tobias

4

Eski bir soru, ancak yeni okuyucuların yararına, temel bağlamları görmenin başka güzel yolları da var.

M-x describe-bindings

Şu anda mevcut olan tüm bağlamaları listeler, bu listeden en iyi şekilde yararlanmak için isearch, occur, vb. Kullanın.

M-x describe-prefix-map

Bu, geçerli modda mevcut olan tüm bağlamaları gösterir, diğer salt okunur Emacs arabelleğinde olduğu gibi ekran arabelleğini kullanabilirsiniz, örneğin dizeler için özgürce arama yapabilirsiniz.

M-x describe-mode

Size mevcut mod hakkında genel bilgi vermenin yanı sıra, mevcut tüm tuş bağlantılarını da listeleyecektir.

M-x describe-minor-mode

Küçük modun adını girmeniz istenecek ve ardından bu küçük mod için bilgi ve tuş bağlantıları gösterilecektir.

NOT : Aşağıdaki örnekler ek paketler kullanır ( MELPA'dan temin edilebilir ) )

Hangi anahtar

Bu, ihtiyacınız olmadan hemen önce bağlamaları gösterir. Bir önek girin, örneğin C-xveyaC-c ve bu önekte bulunan bağlantıların bir listesi gösterilecektir.

Ayrıca, geçerli modda kullanılabilen tuş bağlantılarının bir listesini aşağıdakileri kullanarak da görüntüleyebilirsiniz:

M-x which-key-show-top-level

Bağlamak faydalıdır which-key-show-top-levelSeçtiğiniz bir tuş akoruna , böylece herhangi bir yerden mevcut olan tuşları görüntüleyebilirsiniz.

Örneğin, C-s( isearch-forward) genellikle bilinmeyen kapsamlı bir anahtar haritasına sahiptir. Örneğin , mevcut arama dizesini kullanmaya M-s obaşladığında occur, Emacs'ı uzun yıllar kullandığım için bunu bilmiyordum. Having which-keyetrafında beni Emacs birçok nadir taşlar keşfetmek yardımcı olmuştur.

https://github.com/justbur/emacs-which-key

Kılavuz anahtar

Kılavuz anahtarı, tıpkı şu şekilde çalışır: which-key özellikleri karşılaştırmak için ona bir göz atmanızı tavsiye ettiğim .

https://github.com/kai2nenobu/guide-key

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.