Dato il nome di un comando emacs, come troveresti le associazioni di tasti? (e viceversa)


107

Se conosco il nome di un comando emacs, dice "goto-line"; cosa succede se voglio chiedere se ci sono sequenze di tasti legate a questo comando?

E viceversa, data una sequenza di tasti, come posso trovare il nome del suo comando?

Risposte:


159

Per trovare solo le associazioni di tasti per un comando, puoi usare la funzione "dov'è" dell'help di emacs

C-h w command-name

Se sono impostate più associazioni per il comando, verranno elencate tutte.

Per l'inverso, data una sequenza di tasti, puoi digitare

C-h k key-sequence

Per ottenere il comando che verrebbe eseguito.

È possibile ottenere informazioni dettagliate su un comando, anche su qualsiasi funzione non interattiva definita, digitando

C-h f function-name

Che ti fornirà informazioni dettagliate su una funzione, comprese eventuali associazioni di tasti per essa, e

C-h v variable-name

ti darà informazioni su qualsiasi variabile (legata). Le mappe chiave sono conservate in variabili, tuttavia i codici chiave vengono memorizzati in un formato grezzo. Prova C-h v isearch-mode-mapper un esempio.

Per ulteriore assistenza su come ottenere assistenza, puoi digitare

C-h ?

Batti sul tempo. D'oh.
dmckee --- gattino ex moderatore,

51
Puoi anche C-h w <function name>sapere dove si trova la chiave, non la documentazione completa. Al contrario, puoi anche C-h c <key sequence>sapere quale funzione è associata a una sequenza di tasti.
ShreevatsaR

7
inoltre: Ch w è tipicamente legato a dov'è.
Cheeso

2
Quindi, posso dov'è dov'è quando dimentico Ch w. È fantastico ! ;)
Sake

1
Per coloro che si sono associati C-ha qualcos'altro nei loro gestori di finestre: C-h wè equivalente a M-x where-is. C-h kè equivalente a M-x describe-key. C-h fè equivalente a M-x describe-function.C-h vè equivalente a M-x describe-variable. C-h ?è equivalente a M-x help-for-help. Si noti inoltre che f1può essere utilizzato al posto di C-h.
Ricardo

13

C-h w(o F1-w): where-isRET nomecomando RET

Fa proprio quello che chiedi: elenca le chiavi associate senza informazioni aggiuntive. :)


13

Per ottenere interattivamente il comando associato a una scorciatoia da tastiera (o una sequenza di tasti in termini di Emacs), vedere la risposta selezionata.

Per ottenere a livello di codice il comando associato a una determinata sequenza di tasti, utilizzare la funzione key-bindingo lookup-keyche accetta una sequenza di tasti e restituisce il comando associato. La funzionekey-binding è ciò che C-h kutilizza.

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

restituisce il comando associato a C-h m ricerca in tutte le mappe di tasti correnti. La funzione lookup-keyricerca in un'unica mappa dei tasti:

(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

Per ottenere programmaticamente tutte le sequenze di tasti associate a un determinato comando, where-is-internalè probabilmente la funzione da usare. Il nome della funzione che termina coninternal sembra suggerire che non spetta agli utenti di Emacs usarla nei loro file init, ma questa funzione che ha una docstring sembra suggerire il contrario. Chiunque consideri l'uso di where-is-internaldovrebbe prima controllare se la rimappatura dei tasti può invece raggiungere il proprio obiettivo.

Un'alternativa per trovare le chiavi che sono legate a un comando specifico (ad esempio, forward-char) è substitute-command-keys(ad esempio, (substitute-command-keys "\\[forward-char]")). Ciò è particolarmente utile nei testi più grandi.


Guardando la documentazione di where-is-internalsuggerisce che è OK usarlo. Inoltre, convenzionalmente usiamo un formato come where-is--internal(nota il doppio trattino) per le funzioni "private".
GergelyPolonkai

2
L'utilizzo del suffisso -internalè descritto qui: gnu.org/software/emacs/manual/html_node/elisp/… . Dovrebbe essere utilizzato per le funzioni C interne.
Tobias

4

Una vecchia domanda, ma a beneficio dei nuovi lettori, ci sono altri modi carini per vedere le associazioni dei tasti

M-x describe-bindings

Elenca tutte le associazioni attualmente disponibili, usa isearch, exist, ecc. Per fare un buon uso di questo elenco.

M-x describe-prefix-map

Questo mostra tutti i collegamenti disponibili dalla modalità corrente, puoi usare il display buffer come faresti con qualsiasi altro buffer Emacs di sola lettura, per esempio puoi cercare liberamente stringhe ecc.

M-x describe-mode

Oltre a fornire informazioni generali sulla modalità corrente, elencherà anche tutte le associazioni di tasti disponibili.

M-x describe-minor-mode

Ti verrà chiesto di inserire il nome di una modalità minore, quindi verranno mostrate le informazioni e le associazioni di tasti per quella modalità minore.

NOTA : gli esempi seguenti utilizzano pacchetti aggiuntivi (disponibili da MELPA )

Quale chiave

Questo mostra gli attacchi appena prima che ti servano. Immettere un prefisso, ad esempio C-xo, C-ce verrà visualizzato un elenco delle associazioni disponibili in quel prefisso.

È inoltre possibile visualizzare un elenco di associazioni di tasti disponibili dalla modalità corrente utilizzando:

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

È utile legare which-key-show-top-level a un accordo di tonalità di tua scelta, in modo da poter visualizzare le tonalità disponibili da qualsiasi luogo.

Ad esempio, C-s( isearch-forward) ha una vasta mappa dei tasti che spesso è sconosciuta. es. M-s oinizia a occurusare la stringa di ricerca corrente, non lo sapevo per molti anni di utilizzo di Emacs. Avere which-keyintorno mi ha aiutato a scoprire molte gemme rare in Emacs.

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

Chiave guida

La chiave guida funziona più o meno allo stesso modo in which-keycui consiglierei di esaminarla per confrontare le funzionalità.

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.