タグ付けされた質問 「keymap」

キーマップは、さまざまなキーシーケンスのキーバインディングを指定するLispデータ構造です。単一のキーマップは、個々のイベントの定義を直接指定します。キーシーケンスが単一のイベントで構成される場合、キーマップでのそのバインディングは、そのイベントに対するキーマップの定義です。

4
キーがバインドされているキーマップを確認するにはどうすればよいですか?
で「d」キーをリバウンドgnus-article-modeしましたが、ポイントが添付ファイル上にある場合、その古い動作は引き続きアクティブです。を実行することで再バインドが有効にならなかったことがわかりますが、C-h k dその時点でどのキーマップが有効であるかを教えていないので、再バインドできます。 それを見つける方法はありますか? 正確な例は次のとおりです。私は悪を使用しており、記事をモーションモードにする必要があります。キーボードレイアウトでは、上に移動するキーとして「d」を設定しました。 (evil-mode 1) (add-to-list 'evil-motion-state-modes 'gnus-article-mode) (setq evil-emacs-state-modes (remove 'gnus-article-mode evil-emacs-state-modes)) (define-key evil-motion-state-map "d" 'evil-previous-line) 邪悪なキーが確実に考慮されるように、ローカルマップでgnusキーの設定を解除します。 (defun as/alter-article-evil-map () (local-unset-key "d")) (add-hook 'gnus-article-mode-hook 'as/alter-article-evil-map) 残念ながら、ポイントが添付ファイル上にある場合、「d」キーは表示されなくなりますが、添付ファイルを削除するように求められます。その時点で別のバインディングがアクティブになっていると思うので、質問です。 解決策keymaps-at-point以下を使用して、使用されたキーマップがテキストプロパティからのものであることを見つけました。次に、バインドされた関数のコードを見て、キーマップの名前を見つけましたgnus-mime-button-map。次のコードは私が望むことをします: (defun as/alter-article-evil-map () (define-key gnus-mime-button-map "d" nil)) (add-hook 'gnus-article-mode-hook 'as/alter-article-evil-map)

4
メジャーモードバインディングをオーバーライドする方法
時々、私のグローバルキーバインドはメジャーモードによって上書きされます。簡単な例は、私のinitファイルの次の設定です (global-set-key (kbd "C-j") 'newline-and-indent) しかし、面倒なことに、このキーバインディングは、スクラッチバッファのデフォルトモードである「Lisp Interaction」メジャーモードによって隠されています。 メジャーモード(またはマイナーモード)がグローバルキーバインドを隠している状況にいるとき、どのように戻すことができますか? 注:私の質問ではありません「私はバインドすることができますどのようC-jにnewline-and-indentLispの対話で『』モード?」 クラッシュするキーマップや、メジャー/マイナーモードによって非表示になるユーザーキーバインドを処理する方法に関する、より一般的な回答に興味があります。


1
CiとTABを区別する方法は?
通常、歴史的な理由から、emacsはTABキーコードとC-iキーを同じものとして扱います。cf。ファンクションキーに関するemacs lispのドキュメント、または「TABとの違いは何ですか?」という質問に対するabo-aboの回答 。 注:この記事では、キーコードがありTAB、<tab>とC-i。一方tab、Ctrl+ はキーボードの物理キーです。 i しかし、現時点では、Emacsの扱いTABとC-i同じもののように、すなわち(equal (kbd "TAB") (kbd "C-i"))- > t。 しかし、私たちはもはやコンピューティングの石積みに住んでいないので、これは非常に迷惑です。これを回避するためにできることはいくつかあります。例えば 「TABを変更せずにコマンドをCiにバインドするにはどうすればよいですか?」 Treyのソリューションは私の場合local-function-key-mapsは機能しませんでした。変数は変更されません。変数を使用するdeleteよりも使用するように変更するとdelq、変数が変更されますが、resolve ... tabとCtrl+ iは同じままです。 ハイパーマップへの翻訳は、 1980年代の回避策のように思えます... Hyper+ を使用することiもできます。 を使用して、いくつかのポストASCII制御コードに+ input-decode-mapをマッピングすることCtrliは、ほとんど私が探しているものです。+ kbdをバインドするソースコードのすべてのビットを変更する必要があることを意味するマクロで適切に動作しないことを除きます。すべてのソースコードが適切に変更されていることを考えると、おそらくこれが最良のソリューションです。Ctrli 使用(kbd "<tab>")のためにtabと(kbd "C-i")(に変換され(kbd "TAB")、つまり\tためにリテラルを)Ctrl+は、i 仕事をしていますが、変更する必要があると思い、すべての間違った種類使用するソースファイルtab[読む:キーコードTAB]迷惑です。 これは、たとえばgithubの問題やemacs.sxでも提案されています。 これらの解決策はどれも本当の解決策ではないようで、回避策やハッキング(既存のバグの)を検討したいと思います。 するそこに方法があり、強制的にマップするのemacsをtabする(kbd "<tab>")と(kbd "TAB")しながら、Ctrl+ iにマッピングされている(kbd "C-i")Emacsのソースコードをmodyfingの短いは? このアプローチはつまり、ユーザーには完全に見えなくする必要がありますtabキーコードのような<tab>とはTABしながら結合1にマップする必要がありますCtrl+ iキーコードのようなC-i別の結合にマップする必要があります。 それほど深刻ではありませんが、ここにあるemacs開発者は、これがいつかemacsソースコードで変更/修正されるかどうかをコメントできますか?

7
ポイントでファイルをプレビューするための「クイックビュー」キーを押した
diredでポイントされているファイルの「クイックビュー」を実行する関数を作成したいと思います。 これを機能させる方法は、ファンクションキーを押したままにすることです。これにより、ファイルがバッファ内で表示されるようになりますが、キーを放すとバッファが閉じて、バッファが戻ります。 で一時バッファを閉じる必要はありません C-x k。 Emacsでこの機能を作成する方法はありますか?キー押下/押下に関数をバインドできれば可能だと思われます。

2
TABとは異なるCiをバインドする方法は?
Control-i実行したいindent-region(基本的にはXcodeがそのマッスルメモリを既に構築しているため)。 私はそれを実現Control-iし、tabアスキーの意味では区別できないが、彼らはキーコードの意味です。 私は明白なことを試しました: (global-unset-key (kbd "C-i")) (global-set-key (kbd "C-i") 'indent-region) 役に立たない-を押すとControl-i、tabキーが現在のコンテキストで行うことは何でも実行されます。Emacsがタブボタンを別の方法で扱うのを助けるためにできることはありますControl-iか? 更新:リージョンが選択されたときにtab/ Control-iプレスが何をするかを再マッピングできることで、同等の結果が達成されると思います。
15 keymap 

2
組織モードで特定のアジェンダコマンド/リストにキーをバインドする方法
Sacha Chuaに続く予定外のTODOアイテムをすべて表示するために、組織の議題にカスタムキーを追加しました。 (defun sacha/org-agenda-skip-scheduled () (org-agenda-skip-entry-if 'scheduled 'deadline 'regexp "\n]+>")) (setq org-agenda-custom-commands '(("u" "Unscheduled tasks" alltodo "" ((org-agenda-skip-function 'sacha/org-agenda-skip-scheduled) (org-agenda-overriding-header "Unscheduled TODO entries: "))))) このリストはC-c a uで表示できますが、1つのキーにバインドするだけです。現在、私はシンプルです: (global-set-key (kbd "<f8>") 'org-todo-list) しかし、上記のカスタムコマンドを使用するようにしたいと思います。私はマニュアルを掘り下げましたが、それを行う方法がわかりません。
15 org-mode  keymap 

3
Emacsで知られている最長のキーシーケンスとは何ですか?
QtはEmacsスタイルのキーバインディングをサポートしていますが、最大4つのキーのみをサポートしています。なぜこの制限を増やす必要があるのか​​を明確にするために、それ以上のキーを持つEmacsスタイルのキーバインドの例を示すと便利です。これに関する既知の例や、Emacsキーマップで定義された長いキーシーケンスをプログラムで見つける方法はありますか? 編集:これは一般的な知識だと思いましたが、キーシーケンスはによって読み取られるキーのセットですread-key-sequence。F1 kあなたの候補を試して、それがあなたのコマンドを記述しているか、それより前の無関係なコマンドを記述しているかを確認してください。

2
キーシーケンスが実際に行うことを確認する方法
テキストを編集するときに、予期しない動作を時々観察します。私の最初の手段は、通常C-h k、特定のキーシーケンスによって呼び出されている関数を見つけるために使用することです。ただし、ドキュメントが観察された動作と矛盾する場合があります。これらの場合、私は通常、他のパッケージがその関数またはキーシーケンスにフックし、その動作を変更していると想定します。 キーシーケンスにどの 関数がフックしているかを調べるにはどうすればよいですか? 最近出会った一例は、"キーを押して、アクティブ領域の最初と最後に引用符が挿入されたことです。これはデフォルトのEmacsの動作ではないのではないかと疑われたため、C-h k "実際にどの関数が呼び出されているのかを調べていました。 describe-keyドキュメントには、関数があることを私に言ったself-insert-command、組み込みの関数である、と呼ばれていました。長い話を短くするために、ある程度の試行錯誤の後、私は行動がによって引き起こされたと判断することができましたelectric-pair-mode。将来、疑わしいパッケージを一度に1つずつオフにして犯人を見つけるよりも、この結論に達するより速い方法がありますか?
14 keymap  hooks 

7
Evil:キーバインドをvimの方法でマップしますか?
私はEmacsバインディングのようevil-jump-to-tagにC-]振る舞う、Evil関数を作成しようとしていM-.ます。 通常の動作はTagsファイルの閲覧には問題ありませんが、Slime slime-edit-definition、Elisps elisp-slime-nav-find-elisp-thing-at-point、Clojures cider-jump-to-varなどでも動作するようにしたいです... これらのメジャーモードおよびその他の多くのモードでは、定義へのジャンプに相当するものがkeybindingにバインドされていM-.ます。 Evilモードで同じ動作を得るには、これらのすべてのモードでキーバインドをローカルにバインドする必要がありますか、またはキーバインドを取得してEmacsに、このキーが押されるたびにそのキーにバインドされた関数を使用するように指示することは可能ですか? Emacsモードで?
13 keymap  evil 

2
バッファ固有のキーバインディング
バッファに固有のキー割り当てを設定することは可能ですか? 組織ファイルの1つに次のものが含まれています。 # Local Variables: # eval: (local-set-key (kbd "<f10>") 'some-custom-defun-specific-to-this-buffer) # End: ただし、このバインディングは他の組織モードファイルでも持続します。別のメジャーモードでファイルを開くと、デフォルトのキーバインディングが起動します。 local-set-keyバッファ固有ではなく、メジャーモード固有のバインディングを設定しているようです。 特定のバッファーでのみアクティブになるバインディングをどのようにして持つことができますか?

1
evil-normal-state-mapとevil-motion-state-mapの違い
のドキュメントevil-normal-state-map: 通常状態のキーマップ。 のドキュメントevil-motion-state-map: モーション状態のキーマップ。 Vimにはいわゆる「モーションモード」がありますか?Vimのでは、実行すると:help Normal-modeしながら、あなたにVimのモードのドキュメントを与えるだろう:help Motion-modeと言われますE149: Sorry, no help for Motion-mode。 また、evil-stateでキーをマッピングする場合、どのステートメントを使用すればよいですか? (define-key evil-normal-state-map (kbd <key>) <command>) (define-key evil-motion-state-map (kbd <key>) <command>) 必要に応じて、Spacemaceを使用しています。

2
組織モードの矢印キー
組織モードのキーマッピングでは、デフォルトで共通機能に矢印キーが使用されます。矢印キーを完全に回避するために、組織モード設定を正常に再マップした人はいますか? シェアしてください。
12 org-mode  keymap 

2
同じバッファで2つのメジャーモードマップを使用する
あるメジャーモードのキーマップを別のメジャーモードのフォールバックキーマップとして機能させることが非常に便利ないくつかの状況に遭遇しました。例えば: 私はいくつかの組織ドキュメントに多くのLaTeXを記述しているのでlatex-mode、編集中にコマンドを簡単に利用できると便利 org-modeです。 私はMarkdownをサポートするIRCルームに頻繁にmarkdown-modeアクセスするので、にキーバインドを追加しておくのも良いでしょうerc-mode。 どちらの場合も、この追加のキーマップはフォールバックとして機能する必要があります(これが、マイナーモードを使用できない理由です)。ラテックスコマンドでorg-modeキーを上書きしたくありません。私が欲しいのは: キーがで定義されており、latex-mode-mapかつで定義されていない org-mode-map場合は、latex-mode-mapバインディングを使用します。 Q:キーマップをメジャーモードのフォールバックキーマップとして設定するにはどうすればよいですか? または Q:何もオーバーライドせずに、1つのメジャーモードマップから別のメジャーモードマップにキーをコピーするにはどうすればよいですか? ただ明確にします。これらのキーを1つずつ定義できることはわかっていますが、自動化されたソリューションがあれば、はるかに便利です。

2
通常のキーを修飾キーに変換します
なんらかの理由で、デンマークのドル記号をOS Xに送​​信するキーを備えたキーボードがあります§。シフトでプラス/マイナス記号-を送信します±。 Emacs内で§キーを見てそれをハイパーまたはスーパーに変換することは可能ですか?したがって、その§キーを押しながらを押すと、EmacsでfアクティブH-fになります。 私は次のことを試しましたが、うまくいきません: (define-key key-translation-map (kbd "§") (kbd "<Hyper>")) <Hyper> is undefinedキーを押したときに表示されるだけで、修飾子としては機能しません。 これも機能しません: (define-key key-translation-map (kbd "§") "<Hyper>") §キーをキーに変えるだけ<です。

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