web-dev-qa-db-ja.com

Emacsに(repeat-last-command)がありますか?

多くの場合、手元のタスクに戻るためだけにaめるために、次のようなものを探しているaproposとドキュメントを掘り下げました。

(繰り返し最後のコマンド)

最後に実行したCまたはMコマンドを実行します(fnキーにリバウンドするため)

または時には関連する:

(describe-last-function)

誤ってキーストロークを発行しただけで、その効果をトリックのバッグに追加したいと思います。 describe-keyは近いですが、入力した内容を知る必要があります。

信頼できる相棒に単純に頼みすぎていますか?

132
ack

describe-last-function」に関して:

変数last-commandがあり、これは最後に実行したことを表すシンボルに設定されます。したがって、このelispスニペット-(describe-function last-command)-は、すぐに発生したことに関するドキュメントを表示する必要があります。

だから、ささいな作業describe-last-functionをそうすることができます

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

そのelispを.emacsまたは同等のものに入れると、M-x describe-last-functionになります。

いくつかのキーを叩いたり、興味のあるものから最後のコマンドを変更する何かをした場合、command-history関数が興味深いかもしれません。 M-x command-historyで取得できます

59
cms

繰り返し機能は、標準のEmacsディストリビューションに含まれるrepeat.el Emacs LISPパッケージによって提供されます。 repeat.elのドキュメントから:

このパッケージは、引数を含め、前のコマンドを繰り返すコマンドを定義します。このコマンドはキーC-x zに接続されています。前のコマンドを1回繰り返すには、C-x zと入力します。直後に2回繰り返すには、zを入力します。 zを何度も入力することで、コマンドを何度も繰り返すことができます。

Repeatコマンドに関する追加情報を表示するには、次を入力します。 C-h F repeat RET Emacs内から。

166
Emerick Rogul

最後のコマンドを繰り返す

C-xz

一度押したら、押すだけ z その後、それを繰り返します(押す必要はありません C-x 再び)。

151

次のコマンドを繰り返すことができます C-xz、ヒット z 繰り返し続けるために。

誰も言及していない少し衝撃的なrepeat-complex-command、キーバインディングから利用可能 C-xESCESC

76
ashawley

また、M-x view-lossageは、最後に入力した100回のキーストロークを表示します。そのため、コマンドの場所を確認できます。ちょうど今M-x command-historyこれは、C-h w今。

23
quodlibetor

確かではありませんが、これを探しているのでしょうか?

コマンド C-xz (repeat)は、Emacsコマンドを何度も繰り返す別の方法を提供します。このコマンドは、前のEmacsコマンドを繰り返します。コマンドを繰り返すと、前に使用したものと同じ引数が使用されます。毎回新しい引数を読み取るわけではありません。

Emacsマニュアル、8.11コマンドの繰り返し

17
echox

これも役立つかもしれません... 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.
9
Murali VP

個人的に私はセバスチャンのアイデアが有用だと感じました。これが作業バージョンです

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

これは古いですが、Emacsプロンプトで最後に入力したコマンドを取得しようとしたときに、Googleがこれを最初に投稿します。これらの答えのどれも私には役に立たなかったので、私がやったように後でこれにつまずくかもしれない人々のために私の2セントを入れることにしました。私はPortacleを使用していますが、探しているものを ここ で見つけたので、さまざまなセットアップで動作するのに十分な汎用性を期待しています。とにかく、私のために働いたのは C-↑ そして C-↓ 履歴を循環します。を使用して M-p そして M-n 同様に機能しましたが、Bashをかなり使用しているため、矢印を使用することを好みます。

0
Doug F