사악한 모드 Emacs에서 키 시퀀스 정의

사악한 모드 Emacs에서 키 시퀀스 정의

Evil 문서에서 키 시퀀스 정의에 대한 지침을 찾을 수 없습니다.

개발자가 제공한 예에서는 단일 키만 다룹니다.

(define-key evil-normal-state "w" 'foo)

일반 모드에서 "gv"를 정의하거나 삽입 모드에서 ";RET"를 정의하려면 어떻게 해야 합니까?

예를 들어 Vim에서는 다음과 같이 합니다.

imap ;<cr> <end>;<cr>
map gv :tabprev<cr>

답변1

이것사악한 위키 페이지추천elscreen.elVim의 탭을 시뮬레이션합니다:

(load "elscreen" "ElScreen" t)

(define-key evil-normal-state-map (kbd "C-w t") 'elscreen-create) ;creat tab
(define-key evil-normal-state-map (kbd "C-w x") 'elscreen-kill) ;kill tab

(define-key evil-normal-state-map "gv" 'elscreen-previous) ;previous tab
(define-key evil-normal-state-map "gt" 'elscreen-next) ;next tab

마찬가지로 다음을 정의할 수 있습니다.

(define-key evil-insert-state-map (kbd "; <return>") 'move-end-of-line)

이것 은 소송 을 따랐다 imap ;<cr> <end>;<cr>. follow 를 누르면 커서가 줄 끝으로 이동하고 세미콜론이 삽입됩니다 ;. Return좀 더 일반화하고 싶지만 중요한 기능이 빠졌습니다.

(define-key evil-insert-state-map (kbd ";") 'insert-or-append)

(defun insert-or-append ()
  "If the user enters <return>, then jump to end of line and append a semicolon,
   otherwise insert user input at the position of the cursor"
  (interactive)
  (let ((char-read (read-char-exclusive))
        (trigger ";"))
    (if (eql ?\r char-read)
        (progn
          (end-of-line)
          (insert trigger))
      (insert (this-command-keys)))))

관련 정보