Evilドキュメントにキーシーケンスを定義するための指示が見つかりません。
開発者が提供した例では、単一のキーのみを扱います。
(define-key evil-normal-state "w" 'foo)
通常モードで「gv」を定義したり、挿入モードで「; RET」を定義したりするにはどうすればよいですか?
たとえば、Vimでは次のようにします。
imap ;<cr> <end>;<cr>
map gv :tabprev<cr>
答え1
これ邪悪なWikiページおすすめ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)))))