どのように私はEmacsのマムシモードでプレフィックスキー「C」、「D」などを再マッピングすることができます

StackOverflow https://stackoverflow.com/questions/2145562

質問

私はColemakキーボードレイアウトを使用して、からVimのレイアウトを試してみたいんですここVimpulseでを。しかし、レイアウトは、コマンド接頭Vimのキー「C」と特に「d」は再マッピング、およびこれらのキーは標準バイパーキーremapコマンドで容易に再マップしていないようです。これらは、すべての毒蛇のキーマップで「マムシ-コマンドの引数」にマッピングされ、そして実際のキーの機能は、バイパー源の別の場所で定義されているように思われます。

バイパーソースの私のローカルコピーをフォークし、その中に魔法のプレフィックスキー値を再定義するよりも、他のキーにプレフィックスコマンドを再バインドする簡単な方法はありますか?

役に立ちましたか?

解決 2

それも、コマンドのプレフィックスキーを再マッピングをサポートする 悪モードのように見えます。私の代わりにそれを使用します。

他のヒント

バイパーモードコマンドのプレフィックスキーは、間接の二組を使用して設定されています。 'viper-command-argumentにバインドされているすべてのコマンドキーのようにあなたは、最初のを見つけました。行われている次のことは、変数viper-exec-arrayでルックアップしています。それは現在のようにように設定されます:

(aset viper-exec-array ?c 'viper-exec-change)
(aset viper-exec-array ?C 'viper-exec-Change)
(aset viper-exec-array ?d 'viper-exec-delete)
(aset viper-exec-array ?D 'viper-exec-Delete)
(aset viper-exec-array ?y 'viper-exec-yank)
(aset viper-exec-array ?Y 'viper-exec-Yank)
(aset viper-exec-array ?r 'viper-exec-dummy)
(aset viper-exec-array ?! 'viper-exec-bang)
(aset viper-exec-array ?< 'viper-exec-shift)
(aset viper-exec-array ?> 'viper-exec-shift)
(aset viper-exec-array ?= 'viper-exec-equals)

だから、あなたが鍵を作りたい場合は、 T 削除コマンドのように振る舞う、次の二つのことが必要になります:

(aset viper-exec-array ?t 'viper-exec-delete)
(define-key viper-vi-basic-map "t" 'viper-command-argument)
(そしておそらく、あなたはからの動きを再バインドしたい T どこかに、言う C キーを使用してます:

(define-key viper-vi-basic-map "c" 'viper-goto-char-forward)

最後に、私は完全に理解するためにふりをしていないルーチン'viper-prefix-arg-comを、変更する必要があります。期待どおり、?cとし、 T 結合作品をすべて?tを交換する場合ということでは、と述べました。 ( - あまりにも働く代わりに、あなたは?t ?cが使用されているのと同じ方法を追加することができます)。私はそのためのソースを提供したいが、それは(それが4文字の変更です)ここに含めて本当に価値が100行の長さだし、ではありません。あなたは、 M-X検索機能マムシプレフィックス-argに-COM を実行して、ソースに取得することができます。

ロングストーリー短い、あなたがしたい場合は卸売再結合マムシのためのキーで、それが仕事のかなりの量になるだろうとあなたは毒蛇のソースコードをはるかに慣れるだろう。

'viper-prefix-arg-comを符号化する方法を見て、あなたはそれを再定義することなく、必要な変更を加えることはできません。 viのコマンドの3つのまたは4他の異なるタイプがマムシモードの実装(この1つは「コマンドの引数である)ということはおそらくあります。他の人が再バインド...

にうまくいけば、より簡単です
scroll top