Emacs'tan gelen, vim'i deneyen ve kazanacak çok şey olduğunu fark eden biri olarak, kötülüğü ilk kullanmaya başladığımda çok fazla deney yaptım. Aşağıdakiler tartışmalı olsa da, terminal, firefox, kakao vb.'de daha evrensel olarak kullanılan emacs anahtarlarını saklamak istedim, ancak vim düzenleme yeteneklerini kaybetmek istemedim. Emac'lerimde aşağıdaki anahtarları yeniden oluşturmaya karar verdim:
(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)))))
Ne yazık ki, bunlar vim "bir ekranı yukarı veya aşağı taşıma" işlemleriyle örtüşüyor. Ancak, bunun yerine aşağıdakileri kullanmak konusunda rahat oldum:
(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)
))
Ayrıca, vim'den geliyorsanız ve "jk" (veya başka herhangi bir 2 vuruşlu kombinasyon) kullanarak eklemeden normal moda hızlı bir yol istiyorsanız, en iyi yol metni http://www.emacswiki.org/ adresinden kopyalamaktır. emacs / download / key-chord.el ve ~ / .emacs.d / key-chord.el dosyanıza yapıştırın. Ardından .emac'lerinize şunları ekleyin:
;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)
Ayrıca, vim'den geliyorsanız ve emacs'deki panoya kopyalamanın iyi olmadığını düşünüyorsanız, muhtemelen haklısınız. Ancak, sudo apt-get install xsel'i çalıştırdıktan sonra aşağıdakileri yararlı bulabilirsiniz:
(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)
Açıkçası, bu tartışmalı değişikliklerden herhangi birinin buna değip değmeyeceğine kendiniz karar vermeniz gerekecek, ancak belki de bu temel değişiklikler size ilham verecektir.
Silme ve yapıştırma, panoya kopyalamadan silme, verimli 4x / 16x hareket, yapıştırma kaydı belirtimi için sayım kullanımı, c / c ++ için gerçekten çalışan sekme ayarları ve daha fazlası gibi diğer gerçekten harika işlev uygulamaları için kontrol edebilirsiniz. tam .emacs, init.el, my-keymaps.el ve my-functions.el versons'ı https://github.com/Russell91/emacs adresinde