Emacs

在 Evil 模式 Emacs 中定義鍵序列

  • August 14, 2012

我在 Evil 文件中找不到任何關於定義鍵序列的說明。

開發人員給出的範例僅涵蓋一個鍵。

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

如果我想在普通模式下定義“gv”或在插入模式下定義“;RET”,我需要做什麼?

例如,在 Vim 中,我只是這樣做:

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

Evil wiki 頁面建議使用elscreen.el來模擬 Vim 的選項卡:

(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>. 如果按;後跟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)))))

引用自:https://unix.stackexchange.com/questions/45292