在 Emacs 中是否有一个(repeat-last-command)命令?

我经常深入研究一些恰当的文档,寻找类似下面这样的东西,结果却放弃了,回到手头的工作上来:

(重复-最后-命令)

执行我刚才执行的最后一个 C 或 M 命令(将被反弹到 fn 键)

或有时相关的:

(描述-最后-函数)

我刚才错按了什么键,我想把这个效果加到我的技巧包里。Description-key 很接近,但需要知道我输入的内容。

我对我忠实的伙伴要求太多了吗?

44610 次浏览

重复功能由 repeat.el Emacs Lisp 包提供,该包包含在标准 Emacs 发行版中。来自 repeat.el的文档:

这个包定义了一个命令 重复前面的命令, 不管那是什么,包括它的 争吵,不管是什么,这个 命令是连接到关键的 C-x z。 要重复上面的命令一次, 输入 C-x z 重复第二次 紧接着,输入 z 一次又一次地输入 z 就可以了 一遍又一遍地重复命令。

要查看有关 repeat 命令的其他信息,请在 Emacs 中键入 C-h F repeat RET

我不是很确定,但也许你正在寻找这一个?

命令 C-xz(repeat)提供了另一种重复 多次使用 Emacs 命令。此命令重复以前的 Emacs 命令 命令,不管它是什么。重复一个命令使用相同的参数 它不会每次都读取新的参数。

Emacs 手册,8.11重复命令

关于“ 描述-最后-函数”:

有一个变量 last-command,它被设置为一个符号,代表你上次做的事情。因此,这个省略号代码片段 -(describe-function last-command)-应该会显示立即发生的事情的文档。

因此,您可以像这样创建一个简单的工作 describe-last-function

(defun describe-last-function()
(interactive)
(describe-function last-command))

把这个省略号放到 .emacs或者等价的地方,你就会得到一个 M-x 描述最后一个函数

如果您已经敲击了几个键,或者在您感兴趣的事情之后修改了 last-command,那么 command-history函数可能会引起您的兴趣。你可以通过 M-x 命令历史得到它

重复最后一个命令

C-xz

一旦你按下它,只按一下 z 之后,它将重复(不必再次按 C-x)。

而且,M-x view-lossage显示的是最后一百(?)你输入的按键。因此,您将能够看到命令在哪里。这是我使用,直到我刚刚发现了关于 M-x command-history我认为我将使用与 C-h w现在。

是的,有一个 重复命令,叫做 repeat:

  • 您可以用 C-x z重复命令,然后按 z继续重复。

有点令人震惊的是没有人提到 repeat-complex-command,可从键绑定 C-x ESC ESC

也许这也会有帮助..。 来自 emacs 的逐字帮助:

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.

我个人认为塞巴斯蒂安的想法很有用

(global-set-key "\C-r" #'(lambda () (interactive)
(eval (car command-history))))

这是旧的,但谷歌弹出第一次发布这个时,我正在寻找检索最后一个命令,我键入的 Emacs 提示符。这些答案对我都不起作用,所以我决定对那些可能在以后像我一样偶然发现这个问题的人提出我的意见。我正在使用 Portacle,但是我在 给你中找到了我想要的东西,所以我希望它足够通用,可以用于不同的设置。不管怎样,对我有用的是使用 C-↑C-↓来循环历史。使用 M-pM-n也很有效,但是我更喜欢使用箭头,因为我经常使用 Bash。

Dot-mode 是重复最后一个命令的方法。

来自其评论:

它模拟 vi‘ redo’命令,重复 紧接在命令序列之前。这是由 记录改变缓冲区的输入命令,即不是运动 命令。