タグ付けされた質問 「keyboard-macros」

3
キーボードマクロをLisp関数として保存する方法は?
非常に頻繁に、複数のキーストロークを必要とする一連の手順を実行する必要があります。同じセッションの場合、これらのステップはキーボードマクロに記録できます。 例として、頻繁に実行される検索/置換操作をキーボードマクロとして保存します。しかし、emacsを終了すると、そのマクロは失われます。 頻繁に使用するキーボードマクロをLisp関数として保存するにはどうすればよいですか? 簡単にするために、関数として「abc」を「def」に置き換えるアクションを保存して、emacsセッション全体で再利用できるようにします。

2
キーボードマクロで次の行を処理する方法
以下を使用して、バッファー内の行を結合するキーボードマクロを作成しました。 F3 C-n M-x join-line RET F4。 行が長すぎて折り返され始める場合を除き、正常に機能します。これにより、このマクロはフレームの幅に依存します。next-line次の実際の行に移動するようではなく、現在の行の「ラップ」部分に移動するようです。 その問題を回避する方法は?

2
一般にキーボードマクロのバインドに使用できるEmacsの未使用のキーは何でしょうか?
キーをキーボードマクロにバインドする通常の方法はC-x C-k 0to 9とAtoであると読みましたZ。 したがって、たとえば、キーボードマクロを定義した後、タイプする C-x C-k bと、Emacsがバインドするキーを要求します。そして、この目的のために予約されているキーはC-x C-k 0to 9とAto Zです。 しかし、これにはかなりの数のキーストロークが含まれます。これをバインドするための良い鍵は何ですか?Emacs GUIバージョンを使用して、Ubuntu仮想マシンを実行しているMacに+ C-<return>またはOption+ Enterでバインドできることがわかりました。したがって、それは機能するはずですが、EmacsターミナルバージョンとMac上のネイティブEmacsはどちらも+ C-<return>またはOption+ Enterを同じ<return>ように扱うため、機能しません。 一般にキーボードマクロのバインドに使用できるEmacsの未使用のキーは何でしょうか? それとも、代わりにバインドされていないすべての簡単なキー表示する方法があるCtrlとはMeta?

4
不完全なキーボードマクロの記録を再開するにはどうすればよいですか?
クラシックなユースケース: マクロの記録を開始します。 C-x ( あなたはいくつかのことをします、としましょうhello。 エラーをスローするコマンドをC-g実行するC-sとします(たとえば、誤って実行し、それをでキャンセルする必要がある場合C-g、作業は失われます)。 これで、これまでの録音は失われました。 録音を中断するコマンドを実行する前に中断したところから再開したいと思います。を見てみましたC-h f start-kbd-macroが、Cで書かれているので、いじれません。私ものような変数を探して回りましたcurrent-kbd-macroが、今のところ何も見つかりませんでした。 回復できますか? 更新: なぜうまくいかなかったのかC-u C-x (はわかりませんが、でテストしていることが原因であることがわかりましたC-g。 それC-gは特別なことがわかります-あなたが別の種類のエラーをトリガーした場合 C-x ( M-: (signal 'quit nil) 次に、これは記録を停止しlast-kbd-macroますが、を含みます"M-: M-( signal 'quit nil"が、 C-x ( C-g これにより、記録が停止し、記録されたものはすべて破棄されます。Cgハッピーなユーザーとして(少なくとも2人の友人と同様に)、これはかなり残念な違いです。編集してみましkeyboard-quitたが、何もできません。 これを回復する唯一の方法は、を介してrecent-keys、start-kbd-macro(または同様の)が呼び出された場所を介して自動的に特定することのようkmacro-edit-lossageです。

2
文字列をキープレスに変換する
elispの文字列が与えられた場合、その文字列を再作成するために必要なすべてのキープレスを受け取るemacsをシミュレートしたいと思います。したがって、文字列 "Hello"を指定すると、emacsはShift + H、e、l、l、oを押した場合とまったく同じように動作します。これは常にテキストをバッファに挿入することと同じではないことに注意してください-isearch-modeのようないくつかのモードは直接keypressイベントをリッスンします。 これが必要な理由は、すべての入力がキーボードからのものであると想定したり、バッファ/ウィンドウ/フレームの変更がキーボード入力イベントに関連付けられると想定したりする多くのモードや拡張機能があるためです。彼らがそのイベントに関連するデータを検査する時間。既存のコード本体とシームレスに連携するように取り組んでいる音声認識モードの場合、elispを直接呼び出してアクションを実行するだけでなく、キーを押してアクションを実行するようにelispに指示する必要があります。 unread-command-eventsを見つけましたが、文字列を必要なキーシーケンスに変換する既存のコードは知りません。そのようなものはすでに存在していますか?

4
Ibufferから選択したバッファーまたはdiredから選択したファイルでキーボードマクロを実行するにはどうすればよいですか?
変数名のリファクタリングを行う必要がある場合は、agとmultiple-cursorsを使用します。 しかし、コードブロックの削除/追加/移動を行う必要がある場合は、キーボードマクロを使用します。しかし、各バッファに切り替えて、手動でマクロの実行を開始する必要があります。 Ibufferから開いているバッファー(またはdiredからファイル)を単純に選択し、最後に記録されたキーボードマクロをそれらすべてに対して実行する方法はありますか?

2
キーボードマクロのクエリ置換
私は次のように入力します。私はキーボードマクロを定義してみましょうC-x (、それから始まるに行きM-<、その後、入力M-%のいくつかの出現-置き換えるクエリにFOOをすることによってバー。見つかった3つのオカレンスのうち、最後の2つだけを置き換えてから保存しC-x C-s、kbd-macroをで終了しC-x )ます。よくやった!! ここで別のバッファーでkbd-macroを実行すると、fooをbarで置き換えるかどうかは尋ねられず、以前のいいえはい答えを正確に再現し、2番目と3番目の結果を置き換えます!4番目または5番目のオカレンスは要求されません(この2番目のバッファーにはさらにfooが含まれます)!! これは、マクロを定義したときに期待したものではありません。私はそれを呼び出してquery-replace、その質問に答えさせたいと思いました... 脇の質問:これは間違っていると思いませんか?[ M-x edit-last-kbd-macro記録されている内容を確認して、そのロジックをすべて理解できますが、それでもまだ間違っていると思います。] 本当の質問:query-replace私のkbd-macroを期待どおりに動作させる代わりに何を使用できたでしょうか?

2
KBDマクロでスリープ
私はemacsでpython koansを完成させていました。kdbマクロを使用して、シェルバッファーでの変更をテストし、pythonコードに戻りました。シェルバッファーから次のエラーの行番号を取得して直接ジャンプできるようにしたかったのですが、実行に少し時間がかかったため、代わりに以前の出力が強制終了されました。 記録中に一時停止をマクロに挿入するにはどうすればよいですか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.