我執行了C-x M-k
來殺死Emacs中的一個段落。如預期的那樣,回波區域顯示爲C-x M-k
。顯示回顯區域中最後一個命令的名稱
但是,是否有可能(也)顯示名稱剛剛執行的最後一個命令,以供參考?這對於學習目的是有用的,並且確認執行的命令是預期的命令。
我執行了C-x M-k
來殺死Emacs中的一個段落。如預期的那樣,回波區域顯示爲C-x M-k
。顯示回顯區域中最後一個命令的名稱
但是,是否有可能(也)顯示名稱剛剛執行的最後一個命令,以供參考?這對於學習目的是有用的,並且確認執行的命令是預期的命令。
這未必是一個好主意,但你可以建議call-interactively
做你說什麼:
(defadvice call-interactively (after show-last-command activate)
"Shows the interactive command that was just run in the message area."
(unless (eq major-mode 'minibuffer-inactive-mode)
(message "Ran %s" (ad-get-arg 0))))
要關閉此功能,運行(ad-unadvise 'call-interactively)
。
我不知道這是否可以做到。請記住,任何回聲將被(即將)函數本身在消息區域中回顯的任何消息所取代。您可能可以使用C-h k
(describe-key
)和C-h l
(view-lossage
);或者,您可以使用C-h k
(describe-key
)和C-h l
()。後者顯示最近的300次擊鍵。
根據在文檔中的閱讀,這似乎不可能在一個非hackish的方式。但是,您可以使用掛鉤echo-area-clear-hook
來回顧回顯區域中的內容,如果按鍵看起來像是按describe-key
查找它,然後將從中獲得的函數的名稱記錄到回顯區域。
您可以通過掛鉤'post-command-hook
完成此操作。你只需要添加到過濾命令的列表,以避免一堆惱人的消息。
(defvar filtered-commands '(self-insert-command previous-line next-line
forward-char backward-char execute-extended-command))
(defun my-post-command-function()
(when (and (= 0 (recursion-depth)) (not (memq this-command filtered-commands)))
(message (format "command was %s" this-command))))
(add-hook 'post-command-hook 'my-post-command-function)
很明顯,你認爲合適的添加到變量filtered-commands
。您可能還想調整代碼以接受正則表達式,以減少需要列出的命令的數量。這留給用戶作爲練習。
只是好奇,你知道'描述鍵'功能嗎?例如,'M-x describe-key'' C-x C-f'打開'find-file'信息頁面(假定默認的'C-f'鍵綁定)。 – asm
是的,我知道'Ch k' :) – SabreWolfy
不知道是否有興趣,但'Cx ESC ESC'顯示最後一個命令(for * redo *,'Cg'要中止) –