Sebagai seseorang yang berasal dari emacs, mencoba vim, dan menyadari bahwa ada banyak hal yang dapat diperoleh, saya melakukan banyak percobaan ketika saya mulai menggunakan kejahatan. Meskipun hal berikut ini kontroversial, saya ingin menyimpan kunci emacs yang digunakan secara lebih universal di terminal, firefox, cocoa, dll ..., tetapi tidak ingin kehilangan kemampuan pengeditan vim. Saya akhirnya memutuskan untuk memasang kembali kunci berikut di .emacs saya:
(define-key evil-normal-state-map "\C-e" 'evil-end-of-line)
(define-key evil-insert-state-map "\C-e" 'end-of-line)
(define-key evil-visual-state-map "\C-e" 'evil-end-of-line)
(define-key evil-motion-state-map "\C-e" 'evil-end-of-line)
(define-key evil-normal-state-map "\C-f" 'evil-forward-char)
(define-key evil-insert-state-map "\C-f" 'evil-forward-char)
(define-key evil-insert-state-map "\C-f" 'evil-forward-char)
(define-key evil-normal-state-map "\C-b" 'evil-backward-char)
(define-key evil-insert-state-map "\C-b" 'evil-backward-char)
(define-key evil-visual-state-map "\C-b" 'evil-backward-char)
(define-key evil-normal-state-map "\C-d" 'evil-delete-char)
(define-key evil-insert-state-map "\C-d" 'evil-delete-char)
(define-key evil-visual-state-map "\C-d" 'evil-delete-char)
(define-key evil-normal-state-map "\C-n" 'evil-next-line)
(define-key evil-insert-state-map "\C-n" 'evil-next-line)
(define-key evil-visual-state-map "\C-n" 'evil-next-line)
(define-key evil-normal-state-map "\C-p" 'evil-previous-line)
(define-key evil-insert-state-map "\C-p" 'evil-previous-line)
(define-key evil-visual-state-map "\C-p" 'evil-previous-line)
(define-key evil-normal-state-map "\C-w" 'evil-delete)
(define-key evil-insert-state-map "\C-w" 'evil-delete)
(define-key evil-visual-state-map "\C-w" 'evil-delete)
(define-key evil-normal-state-map "\C-y" 'yank)
(define-key evil-insert-state-map "\C-y" 'yank)
(define-key evil-visual-state-map "\C-y" 'yank)
(define-key evil-normal-state-map "\C-k" 'kill-line)
(define-key evil-insert-state-map "\C-k" 'kill-line)
(define-key evil-visual-state-map "\C-k" 'kill-line)
(define-key evil-normal-state-map "Q" 'call-last-kbd-macro)
(define-key evil-visual-state-map "Q" 'call-last-kbd-macro)
(define-key evil-normal-state-map (kbd "TAB") 'evil-undefine)
(defun evil-undefine ()
(interactive)
(let (evil-mode-map-alist)
(call-interactively (key-binding (this-command-keys)))))
Sayangnya, ini tumpang tindih dengan operasi vim "pindah satu layar ke atas atau ke bawah". Namun, saya menjadi nyaman menggunakan yang berikut ini:
(define-key evil-normal-state-map (kbd "DEL") (lambda ()
(interactive)
(previous-line 10)
(evil-scroll-line-up 10)
))
(define-key evil-normal-state-map (kbd "=") (lambda ()
(interactive)
(next-line 10)
(evil-scroll-line-down 10)
))
Selain itu, jika Anda berasal dari vim dan ingin jalur cepat dari penyisipan ke mode normal menggunakan "jk" (atau kombinasi 2 guratan lainnya), cara terbaik adalah menyalin teks dari http://www.emacswiki.org/ emacs / download / key-chord.el dan paste ke ~ / .emacs.d / key-chord.el Anda. Kemudian tambahkan yang berikut ini ke .emacs Anda:
;load a file named key-chord.el from some directory in the load-path (e.g. "~/.emacs.d")
(require 'key-chord)
(key-chord-mode 1)
(key-chord-define-global "jk" 'evil-normal-state)
Juga, jika Anda berasal dari vim dan menurut Anda copy-to-clipboard di emacs tidak bagus, Anda mungkin benar. Namun, Anda mungkin menemukan yang berikut berguna setelah menjalankan sudo apt-get install xsel:
(defun copy-to-clipboard ()
(interactive)
(if (display-graphic-p)
(progn
(message "Yanked region to x-clipboard!")
(call-interactively 'clipboard-kill-ring-save)
)
(if (region-active-p)
(progn
(shell-command-on-region (region-beginning) (region-end) "xsel -i -b")
(message "Yanked region to clipboard!")
(deactivate-mark))
(message "No region active; can't yank to clipboard!")))
)
(evil-define-command paste-from-clipboard()
(if (display-graphic-p)
(progn
(clipboard-yank)
(message "graphics active")
)
(insert (shell-command-to-string "xsel -o -b"))
)
)
(global-set-key [f8] 'copy-to-clipboard)
(global-set-key [f9] 'paste-from-clipboard)
Jelas, Anda harus memutuskan sendiri apakah salah satu perubahan kontroversial ini layak dilakukan, tetapi mungkin perubahan dasar ini akan menginspirasi Anda.
Untuk beberapa implementasi fungsi yang sangat keren lainnya, seperti hapus dan tempel, hapus tanpa menyalin ke clipboard, gerakan 4x / 16x yang efisien, penggunaan hitungan untuk spesifikasi register tempel, pengaturan tab yang benar-benar berfungsi untuk c / c ++, dan banyak lagi, Anda dapat memeriksa keluar versi lengkap .emacs, init.el, my-keymaps.el, dan my-functions.el di git saya di https://github.com/Russell91/emacs