일부 vim 스타일 키 바인딩 기능.
다음은 전역 맵과 다양한 악한 상태에서 vim 스타일 바인딩을 허용하도록 정의 된 기능과 임의의 키 맵 또는 임의의 바인딩 기능을 취하는 두 가지 일반적인 기능입니다. 이 기능들을 요지 에 넣었습니다 .
(defun kbd+ (keyrep &optional need-vector)
(if (vectorp keyrep) keyrep (edmacro-parse-keys keyrep need-vector)))
(defun gmap (keyrep defstr)
"Vim-style global keybinding. Uses the `global-set-key' binding function."
(global-set-key (kbd+ keyrep) (edmacro-parse-keys defstr t)))
(defun fmap (keybind-fn keyrep defstr)
"Vim-style keybinding using the key binding function KEYBIND-FN."
(call keybind-fn (kbd+ keyrep) (edmacro-parse-keys defstr t)))
(defun xmap (keymap keyrep defstr)
"Vim-style keybinding in KEYMAP. Uses the `define-key' binding function."
(define-key keymap (kbd+ keyrep) (edmacro-parse-keys defstr t)))
(defun nmap (keyrep defstr) "Vim-style keybinding for `evil-normal-state.' Uses the `define-key' binding function."
(xmap evil-normal-state-map keyrep defstr))
(defun imap (keyrep defstr) "Vim-style keybinding for `evil-insert-state'. Uses the `define-key' binding function."
(xmap evil-insert-state-map keyrep defstr))
(defun vmap (keyrep defstr) "Vim-style keybinding for `evil-visual-state'. Uses the `define-key' binding function."
(xmap evil-visual-state-map keyrep defstr))
(defun mmap (keyrep defstr) "Vim-style keybinding for `evil-motion-state'. Uses the `define-key' binding function."
(xmap evil-motion-state-map keyrep defstr))
일반적으로 이러한 기능을 키보드-매크로 스타일 바인딩 (문제의 유스 케이스와 같은)에만 사용하고 emacs 스타일 키 바인딩을 다른 모든 것에 사용하는 것이 좋습니다.
노트
- 패키지 의
bind-key
매크로 use-package
는 훌륭하고 다양한 키 바인딩 기능입니다.
- 한 명령을 다른 명령으로 바꾸려면 Emacs의 리매핑 명령을 사용할 수 있습니다 .
- 일반 키 바인딩에이 기능을 사용하는 경우 "noremap"버전이 없으므로 정의의 바인딩이 변경되면 사용자 정의 바인딩도 변경됩니다.
바인딩 C-]에 M-..
정상 상태에서, 당신이 바인딩 할 것이라는 점 참고 \M-.정상 상태 바인딩 이후, 바인딩 이맥스에 액세스 할 수 M-.로 'evil-repeat-pop-next
. 따라서 정상 상태 바인딩은 다음과 같이 정의 할 수 있습니다.
(nmap "C-]" "\\ M-.")
또는 ( evil-jump-to-tag
정상 상태의 키를 리 바인드 :
(nmap [remap evil-jump-to-tag] "\\ M-.")