Cu接頭辞を持つコマンドを別のキーにバインドする方法は?


7

C-c C-x C-vorg-toggle-inline-images関数を呼び出します。プレフィックスキーを使用すると、この関数にいくつかの引数が渡されます(どちらがわからないか)。

引数付きの関数をF12ボタンにマップして、ボタンと同じようにするにはどうすればよいC-u C-c C-x C-vですか?

回答:


11

C-uユニバーサルプレフィックス引数です。これは、2つの状態(引数ありとなし)しかないコマンドでよく使用されますが、数値プレフィックスとして解釈することもできます(4)。

この場合、ソースコードをorg-toggle-inline-images確認すると、引数が設定されているかどうかのみが確認されるため、渡した特定の値は関係ありません。

を呼び出す関数を定義できます(org-toggle-inline-images t)。ラムダでそれを行うには:

(define-key org-mode-map  (kbd "<f12>")
    (lambda () (interactive) (org-toggle-inline-images t)))

これにより、org-modeでF12がバインドされ、他のモードのグローバルバインドがそのまま残ります。

キーバインディングの詳細については、Emacsでのキーバインディングのマスターをご覧ください。そしてもちろん、Emacs Lispマニュアルには多くの詳細があります


3

一般的な答え、コマンドを定義するコードを見ることです。特に(必ずしもそうではないが)interactive仕様。

あなたが探しているのは、関数がプレフィックスargで何をするかです。そして、同じことをするコマンドを定義します。

通常、プレフィックスargは、コードで別の関数に渡される値を定義するために使用されます。その後、他の関数を呼び出すだけで、元のコマンドのプレフィックスargを介して提供された引数を渡すことができます。IOW、通常は同じコードを使用して、接頭辞argから決定される値の代わりに値を渡すだけです。


3
C-uこれで接頭辞をエミュレートすることもできます:(let ((current-prefix-arg '(4))) (call-interactively #'whatever-command))。これは、呼び出しているコマンドがその引数を使って何をしているのか理解できない場合に役立ちます。
グルカ2015

@glucas:これは、使用される特定のプレフィックス引数が特定のコマンドにとって重要ではない場合、またはコマンドに必要な動作がplainの場合にのみ適切C-uです。コマンドが異なる動作平野がいるかどうかに依存している場合、適切ではありませんC-u(の例えば、区別使用されているかいないC--か、C-3またはC-u C-uちょうどからのC-u私のアドバイスは常にチェックするのがいかにコマンド実際にお菓子A接頭引数。。
ドリュー

確かに良い点です。「最初にCuを押したかのようにこれを呼び出す」という特定の場合のオプションとしてそれを提供するだけです。
グルカ

@glucas:さらに、通常(常にではありませんが)インタラクティブな使用なしで完全に実行でき'(4)、コマンドに渡すことができます(煩わせずにcall-interactively)。(ただし、コマンドにプレフィックスargに対応するパラメーターがない場合は機能しませんが、代わりcurrent-prefix-argにコマンド本体でテストされます。)
Drew

@glucas:はい、あなたがそれを言ってよかったです。
2015
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.