私はEmacsを初めて使い、悪いモードを使用しています。私はvimで持っていたマッピングのいくつかを再マッピングするのにいくつかの問題がありました。 vimでは、map
機能を使用してキーを再マップするのは簡単でした。 cw
をciw
に、dw
をdiw
に変更したかったのです。しかし、私はelispの多くの理解がありません。そのため、簡単なマッピングが可能なプラグインや関数があります。おかげさまで EvilモードのEmacsでのキーマッピング
1
A
答えて
1
最初は悪いニュースです。これは現在、他の演算子にも影響を及ぼさずには不可能です。理由はc
が演算子であるため、c
が入力されるとEmacsはevil-change
を実行します。次にEvilがオペレータのペンディング状態になり、次のw
(またはiw
)が読み込まれ、正しい動作が確認されます。
すべて演算子の演算子状態が1つしかない、つまり共有キーマップが1つしかないという問題があります。したがって、w
をiw
に変更すると、すべてのオペレータの動作が、c
またはd
だけでなく変更されます。
まず良いニュース:あなたは、あなたが単にさらに良いニュース今
(define-key evil-operator-state-map "w" "iw")
を行う可能性があるため、これは大丈夫です場合。上記のことを知っていれば、Emacs lispの魔法を少し使って問題を解決するのは比較的簡単です。オペレータに渡される範囲は、関数evil-operator-range
によって決まります。現在の演算子がevil-change
またはevil-delete
の場合、この関数にアドバイスしてキーバインドを一時的に変更することです。新しいバインディングを配置できるキーマップはいくつかありますが、evil-operator-state-local-map
は合理的な選択です。
(defun my/evil-motion-range (orig-fun &rest args)
(if (not (memq this-command '(evil-delete evil-change)))
(apply orig-fun args)
(let* ((orig-keymap evil-operator-state-local-map)
(evil-operator-state-local-map (copy-keymap orig-keymap)))
(define-key evil-operator-state-local-map "w" "iw")
(apply orig-fun args))))
(advice-add 'evil-operator-range :around #'my/evil-motion-range)
実際には、この手法では、演算子固有のバインディングを一般的な方法で実装できます。
関連する問題
- 1. emacsのEscに "jj"をマッピングする方法Evilモード
- 2. emacs evil-mode key map
- 3. Emacs Evilスムーススクロールと次のマッチジャンプ
- 4. Emacs Evilモード - 'hjkl'を再マップする方法?
- 5. EmacsのViper、Vimpulse、Evilの違いは?
- 6. emacs confモードのカスタマイズ
- 7. javacriptのEmacs fixmeモード
- 8. EmacsがORG-モードで
- 9. Emacs Evilモード - 'ex-showmarks' Vimプラグインを模倣するにはどうしたらいいですか?
- 10. EmacsでEvil-Ex-Commandを "ei"にマッピングする
- 11. my-sqlモードのEmacsのオートコンプリート
- 12. Emacs用のdiredモードのアイコン
- 13. Emacs用語モードの色
- 14. Emacsコンソール/端末モードのメニュー
- 15. npm形式のEmacs JSモード
- 16. Emacsの自動補完モード
- 17. EmacsはORG-モード:デフォルト
- 18. Emacs-Lispモードでの自動補完
- 19. Emacs Python:エコー、フック、組織モード
- 20. emacs悪モード結合マウスイベント
- 21. emacs icicles削除選択モード
- 22. ウィンドウ上のEmacsの会社閉鎖モード
- 23. emacs haskellモードのデフォルトのラムダ記号?
- 24. C言語のためのEmacsモード
- 25. EmacsのPythonのモードは、フォーマット・メッセージエラー
- 26. Emacsのdiredモード用の専用ウィンドウ?
- 27. JavaScriptのキーマッピング
- 28. Vim/GVimのキーマッピング
- 29. RealVNCクライアントのキーマッピング
- 30. AutoCompleteBoxはEvilです