Esiste un (ripeti-ultimo-comando) in Emacs?
Domanda
Spesso ho scavato in documenti e documenti alla ricerca di qualcosa come il seguente solo per rinunciare a tornare al compito da svolgere:
(repeat-last-comando)
esegui l'ultimo comando C o M che ho appena eseguito (per essere rebound a un tasto fn)
o talvolta il relativo:
(descrivere-last-funzione)
quale sequenza di tasti ho appena emesso per errore, il cui effetto vorrei aggiungere alla mia borsa di trucchi. description-key è vicino, ma richiede di sapere cosa ho digitato.
Sto semplicemente chiedendo troppo al mio fidato aiutante?
Soluzione
per quanto riguarda " descrivi-ultima funzione ':
C'è una variabile last-command
che è impostata su un simbolo rappresentativo dell'ultima cosa che hai fatto. Quindi questo frammento di elisp - (descrivi la funzione dell'ultimo comando)
- dovrebbe far apparire la documentazione per ciò che è accaduto immediatamente.
Quindi potresti creare un funzionante descrittivo dell'ultima funzione
in questo modo
(defun describe-last-function()
(interactive)
(describe-function last-command))
Metti quell'elisp in .emacs
o equivalente, e avrai una M-x descrivi-ultima funzione .
Se hai sbattuto su alcune chiavi o fatto qualcosa che ha modificato l'ultimo comando dal momento che ti interessa, la funzione cronologia dei comandi
potrebbe essere interessante. Puoi ottenerlo tramite Cronologia comandi M-x
Altri suggerimenti
La funzionalità di ripetizione è fornita dal pacchetto Emacs Lisp repeat.el
, incluso nelle distribuzioni Emacs standard. Dalla documentazione di repeat.el
:
Questo pacchetto definisce un comando che ripete il comando precedente, qualunque cosa fosse, incluso il suo argomenti, qualunque essi fossero. Questo il comando è collegato al tasto C-x z. Per ripetere il comando precedente una volta, digitare C-x z. Per ripeterlo una seconda volta subito dopo, digita solo z. Di digitando z ancora e ancora, è possibile ripetere il comando più volte.
Per visualizzare ulteriori informazioni sul comando repeat, digita C-h F repeat RET da Emacs.
Ripeti l'ultimo comando
C-x z
Dopo averlo premuto, basta solo premere z dopo ciò e si ripeterà (senza dover premere nuovamente C-x ).
Puoi ripetere i comandi con C-x z e premere z per continuare a ripetere.
Un po 'scioccante nessuno ha menzionato repeat-complex-command
, disponibile dall'associazione dei tasti Cx ESC ESC .
Inoltre, M-x view-lossage
mostra le ultime cento (?) sequenze di tasti inserite. Quindi, sarai in grado di vedere dove si trova il comando. È quello che ho usato fino a quando non ho scoperto subito M-x command-history
che penso che userò con C-h w
ora.
Non ne sono davvero sicuro, ma forse stai cercando questo?
Il comando C-x z (
repeat
) fornisce un altro modo per ripetere un Emacs comanda molte volte. Questo comando ripete i precedenti Emacs comando, qualunque cosa fosse. La ripetizione di un comando utilizza gli stessi argomenti che erano stati usati in precedenza; non legge nuovi argomenti ogni volta.
Manuale di Emacs, 8.11 Ripetizione di un comando
Potrebbe essere anche questo utile ... Da emacs Help letteralmente:
C-x M-ESC runs the command repeat-complex-command
which is an interactive compiled Lisp function in `simple.el'.
It is bound to <again>, <redo>, C-x M-:, C-x M-ESC.
(repeat-complex-command ARG)
Edit and re-evaluate last complex command, or ARGth from last.
A complex command is one which used the minibuffer.
The command is placed in the minibuffer as a Lisp form for editing.
The result is executed, repeating the command as changed.
If the command has been changed or is not the most recent previous command
it is added to the front of the command history.
You can use the minibuffer history commands M-n and M-p
to get different commands to edit and resubmit.
Personalmente ho trovato utile l'idea di Sebastian. Ecco una versione funzionante
(global-set-key "\C-r" #'(lambda () (interactive)
(eval (car command-history))))
Questo è vecchio, ma Google pop-up lo pubblica prima quando stavo cercando di recuperare l'ultimo comando che ho digitato al prompt di Emacs. Nessuna di queste risposte ha funzionato per me, così ho deciso di mettere i miei due centesimi per coloro che potrebbero inciampare su questo in seguito, come ho fatto io. Sto usando Portacle, ma ho trovato quello che cercavo in qui quindi spero che sia abbastanza generico per funzionare con diverse configurazioni. Comunque, ciò che ha funzionato per me è usare C - & # 8593; e C - & # 8595; per scorrere la storia. Anche l'uso di M-p e M-n ha funzionato, ma preferisco usare le frecce dato che uso abbastanza Bash.