問題を説明する
SPC SPC
を+evil/easymotion
にマップしようとすると、「非プレフィックスキーSPC」エラーで失敗します。 他の関数はうまくマップします。
失敗したコードは次のようになります。
(map! (:map doom-leader-map
"SPC" #'+evil/easymotion))
ただし、これらはどちらも問題なく機能します。
(map! (:map doom-leader-map
"SPC" evilem-map))
(map! (:map doom-leader-map
"SPC" #'find-file))
これは、 +evil/easymotion
の内部に、プレフィックスキーへのマッピングを好まない何かがあることを示唆しています...デフォルトのg s
マッピングはg
ように使用するため、これは奇妙です。他のキーも持つプレフィックス。
デバッガーが入力されました--Lispエラー:(エラー「キーシーケンスSPCSPCが非プレフィックスキーSPCで開始します」)
define-key((keymap(remap keymap(avy-goto-word-or-subword-1。evil-avy-goto-word-or-subword-1)(avy-goto-word-1-below。evil-avy -goto-word-1-below)(avy-goto-word-1-above .evil-avy-goto-word-1-above)(avy-goto-word-1 .evil-avy-goto-word-1 )(avy-goto-word-0。evil-avy-goto-word-0)(avy-goto-symbol-1-below。evil-avy-goto-symbol-1-below)(avy-goto-symbol- 1-above .evil-avy-goto-symbol-1-above)(avy-goto-symbol-1 .evil-avy-goto-symbol-1)(avy-goto-subword-1 .evil-avy-goto- subword-1)(avy-goto-subword-0。evil-avy-goto-subword-0)(avy-goto-line-below。evil-avy-goto-line-below)(avy-goto-line-above 。evil-avy-goto-line-above)(avy-goto-line。evil-avy-goto-line)(avy-goto-char-timer。evil-avy-goto-char-timer)(avy-goto- char-in-line .evil-avy-goto-char-in-line)(avy-goto-char-2-below。evil-avy-goto-char-2-below)(avy-goto-char-2-上記。evil-avy-goto-char-2-above)(avy-goto-char-2。evil-avy-goto-char-2)(avy-goto-char。evil-avy-goto-char)(ace -ジャンプワードモード。evil-ace-jump-word-m ode)(ace-jump-line-mode。 evil-ace-jump-line-mode)(ace-jump-char-mode。evil-ace-jump-char-mode))(33。evil-shell-command)(58。evil-ex)(down-mouse -1 .evil-mouse-drag-region)(4 .evil-scroll-down)(21 .evil-scroll-up)(9 .evil-jump-forward)(26 .evil-emacs-state)(down。 evil-next-line)(up .evil-previous-line)(right .evil-forward-char)(left .evil-backward-char)(30 .evil-buffer)(22 .evil-visual-block)( 86 .evil-visual-line)(118 .evil-visual-char)(122 keymap(69 .vimish-fold-delete-all)(100 .vimish-fold-delete)(70 .evil-vimish-fold / create -行)(102。evil-vimish-fold/ create)(107。+ fold / previous)(106。+ fold / next)(72。evil-scroll-left)(76。evil-scroll-right)(左。 "zh")(104 .evil-scroll-column-left)(right。 "zl")(108 .evil-scroll-column-right)(45。 "zb ^")(98 .evil-scroll-line -to-bottom)(46。 "zz ^")(122 .evil-scroll-line-to-center)(13。[122 return])(return。 "zt ^")(116 .evil-scroll-line -to-top)(43 .evil-scroll-bottom-line-to-top)(94 .evil-scroll-top-line-to- 下))(92。 evil-execute-in-emacs-state)(13 .evil-ret)(25 .evil-scroll-line-up)(15 .evil-jump-backward)(6 .evil-scroll-page-down)(5 .evil-scroll-line-down)(2 .evil-scroll-page-up)(29 .evil-jump-to-tag)(67108918 .evil-switch-to-windows-last-buffer)(23 .evil -window-map)(45 .evil-previous-line-first-non-blank)(95 .evil-next-line-1-first-non-blank)(43 .evil-next-line-first-non-空白)(94 .evil-first-non-blank)(124 .evil-goto-column)(63 .evil-ex-search-backward)(59 .evil-repeat-find-char)(47 .evil-ex -search-forward)(44 .evil-repeat-find-char-reverse)(42 .evil-ex-search-word-forward)(91 keymap(100 .git-gutter:previous-hunk)(116 .hl- todo-previous)(104 .outline-previous-visible-heading)(101 .previous-error)(97 .evil-backward-arg)(121。+ evil:c-string-decode)(117。+ evil:url -デコード)(92。+ evil / previous-comment)(42。+ evil / previous-comment)(35。+ evil / previous-preproc-directive)(77。+ evil / previous-end-of-method)( 109. + evil / previous-beginning-of-method )(115。 evil-prev-flyspell-error)(123 .evil-previous-open-brace)(40 .evil-previous-open-paren)(93 .evil-backward-section-end)(91 .evil-backward-section- begin))(93 keymap(100 .git-gutter:next-hunk)(116 .hl-todo-next)(104 .outline-next-visible-heading)(101 .next-error)(97 .evil-forward -arg)(121。+ evil:c-string-encode)(117。+ evil:url-encode)(92。+ evil / next-comment)(42。+ evil / next-comment)(35。+ evil / next-preproc-directive)(77。+ evil / next-end-of-method)(109。+ evil / next-beginning-of-method)(115。evil-next-flyspell-error)(125。evil -next-close-brace)(41 .evil-next-close-paren)(91 .evil-forward-section-end)(93 .evil-forward-section-begin))(41 .evil-forward-sentence- begin)(40 .evil-backward-sentence-begin)(39 .evil-goto-mark-line)(96 .evil-goto-mark)(37 .evil-jump-item)(36 .evil-end-of -line)(35 .evil-ex-search-word-backward)(125 .evil-forward-paragraph)(123 .evil-backward-paragraph)(103 keymap(115 keymap(47 .avy-goto-char-timer )(32クローサー e(t)nil(interactive)(let((current-prefix-arg t))(call-interactively(function avy-goto-char-timer))))(83。 evil-easymotion-snipe-backward)(115 .evil-easymotion-snipe-forward)(65 .evilem--motion-function-evil-backward-arg)(97 .evilem--motion-function-evil-forward-arg )(43 .evilem-motion-next-line-first-non-blank)(45 .evilem-motion-previous-line-first-non-blank)(35 .evilem-motion-search-word-backward)(42 .evilem-motion-search-word-forward)(78 .evilem-motion-search-previous)(110 .evilem-motion-search-next)(41 .evilem-motion-forward-sentence-begin)(40 .evilem -motion-backward-sentence-begin)(93キーマップ(91。evilem-motion-forward-section-end)(93。evilem-motion-forward-section-begin))(91キーマップ(93。evilem-motion-backward -section-end)(91 .evilem-motion-backward-section-begin))(70 .evilem-motion-find-char-backward)(102 .evilem-motion-find-char)(84 .evilem-motion- find-char-to-backward)(116 .evilem-motion-find-char-to)(107 .evilem-motion-previous-line)(106 .evilem-motion-next-line)(103 keymap(107 .evilem -motion-previous-visual-line)(106 .evilem-motion-next -ビジュアルライン)(69。 evilem-motion-backward-WORD-end)(101 .evilem-motion-backward-word-end))(66 .evilem-motion-backward-WORD-begin)(98 .evilem-motion-backward-word-begin) (69 .evilem-motion-forward-WORD-end)(101 .evilem-motion-forward-word-end)(87 .evilem-motion-forward-WORD-begin)(119 .evilem-motion-forward-word-開始))(78 .evil-previous-match)(110 .evil-next-match)(118 .evil-visual-restore)(42 .evil-ex-search-unbounded-word-forward)(35 .evil- ex-search-unbounded-word-backward)(29 .evil-jump-to-tag)(36 .evil-end-of-visual-line)(109 .evil-middle-of-visual-line)(94。 evil-first-non-blank-of-visual-line)(95 .evil-last-non-blank)(48 .evil-beginning-of-visual-line)(107 .evil-previous-visual-line)( 106 .evil-next-visual-line)(103 .evil-goto-first-line)(69 .evil-backward-WORD-end)(101 .evil-backward-word-end)(100 .evil-goto-定義))...) "" nil)
evil-define-key (motion global "" nil)(let((prefix(this-command-keys)))(evil-define-key (quote motion)(quote global)prefix nil)(evilem-default-keybindings(key-description prefix))(setq prefix-arg current -prefix-arg unread-command-events(mapcar(function(lambda(e)(cons te)))(vconcat(if evil-this-operator(progn(where-is-internal evil-this-operator evil-normal-状態マップt)))プレフィックス))))
+ evil / easymotion()
funcall-インタラクティブに(+ evil / easymotion)
call-interactively(+ evil / easymotion nil nil)
コマンド実行(+ evil / easymotion)
システムインフォメーション
elisp
env bootstrapper: envvar-file
elc count: 0
uname -a: Darwin 17.7.0 Darwin Kernel Version 17.7.0: Sun Jun 2 20:31:42 PDT 2019; root:xnu-4570.71.46~1/RELEASE_X86_64 x86_64
modules: (:completion company ivy :ui doom doom-dashboard doom-quit hl-todo modeline nav-flash ophints (popup +all +defaults) treemacs vc-gutter vi-tilde-fringe window-select workspaces :editor evil file-templates fold lispy multiple-cursors rotate-text snippets :emacs dired electric vc :term eshell :tools bibtex editorconfig eval flycheck flyspell (lookup +docsets) macos magit :lang data emacs-lisp my-ess markdown (org +ipython +pandoc) polymode python sh :config default)
packages: (dtrt-indent (fill-function-arguments :recipe (fill-function-arguments :fetcher github :repo davidshepherd7/fill-function-arguments)) deadgrep pandoc-mode)
exec-path: (~/.gem/bin ~/.zplug/repos/zplug/zplug/bin ~/.zplug/bin ~/.cargo/bin ~/.nix-profile/bin ~/.gem/bin /usr/local/bin /usr/bin /bin /usr/sbin /sbin /Library/TeX/texbin /opt/X11/bin ~/.config/nvim/bundle/fzf/bin ~/.local/bin /Applications/Emacs.app/Contents/MacOS/bin-x86_64-10_10 /Applications/Emacs.app/Contents/MacOS/libexec-x86_64-10_10 ~/.local/bin /Applications/Emacs.app/Contents/MacOS/libexec/)
+ evil / easymotionは、デフォルトでevil-motion-state-map
以外の場所にバインドすることはできません。
(map! :leader :m "gs" #'evil/easymotion) ; note the :m
それは他のどこかにバインドされるように設計されていませんでした(そして、確実にバインドすることはできません)。 これは、evil-easymotionを遅延ロードしてから、evilem-mapをトリガーしたキーシーケンスにバインドするためのトリックです。どのキーの統合を損なうことなく、evilem-mapに組み込まれているキーバインドを複製する必要もありません。 コマンドが呼び出されたキーマップを決定するための信頼できるメカニズムがないため、この問題に対する簡単な解決策はありません。 これらはそもそも「拡張」モーションキーであることが意図されているため、これは許容できる妥協案のように思われました。
関係のないメモでは、 :leader
代わりに:map doom-leader-map
:leader
を使用する必要があります。 それらは同等です。
問題は十分に解決されたと思いますが、根本的な問題に対処できないため、 wontfix
としてマークします。 私の注意を引いてくれてありがとう!
27cabeaの時点で、 +evil/easymotion
を好きな場所にバインドできます。 前述の技術的な制限を回避する方法を見つけました。
最も参考になるコメント
27cabeaの時点で、
+evil/easymotion
を好きな場所にバインドできます。 前述の技術的な制限を回避する方法を見つけました。