ในฐานะคนที่มาจาก emacs ลองใช้ vim และตระหนักว่ามีหลายสิ่งหลายอย่างที่จะได้รับฉันทำการทดลองมากมายเมื่อฉันเริ่มใช้ความชั่วร้ายครั้งแรก ในขณะที่สิ่งต่อไปนี้เป็นที่ถกเถียงกันอยู่ฉันต้องการเก็บคีย์ emacs ที่ใช้กันอย่างแพร่หลายในเทอร์มินัล firefox โกโก้ ฯลฯ ... แต่ไม่ต้องการสูญเสียความสามารถในการแก้ไขเป็นกลุ่ม ฉันตัดสินใจที่จะเชื่อมโยงคีย์ต่อไปนี้ใน. emac ของฉันใหม่:
(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)))))
น่าเสียดายที่สิ่งเหล่านี้ทับซ้อนกับการดำเนินการเป็นกลุ่ม "เลื่อนขึ้นหรือลงหนึ่งหน้าจอ" อย่างไรก็ตามฉันรู้สึกสบายใจที่จะใช้สิ่งต่อไปนี้แทน:
(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)
))
นอกจากนี้หากคุณมาจากกลุ่มและต้องการเส้นทางที่รวดเร็วจากการแทรกไปยังโหมดปกติโดยใช้ "jk" (หรือการผสม 2 จังหวะอื่น ๆ ) วิธีที่ดีที่สุดคือคัดลอกข้อความจากhttp://www.emacswiki.org/ emacs / download / key-chord.elแล้ววางลงใน ~ / .emacs.d / key-chord.el ของคุณ จากนั้นเพิ่มสิ่งต่อไปนี้ใน. emac ของคุณ:
;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)
นอกจากนี้หากคุณมาจากกลุ่มและคุณคิดว่าการคัดลอกไปยังคลิปบอร์ดใน emacs นั้นไม่ดีคุณอาจพูดถูก อย่างไรก็ตามคุณอาจพบว่ามีประโยชน์ต่อไปนี้หลังจากเรียกใช้ 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)
เห็นได้ชัดว่าคุณจะต้องตัดสินใจด้วยตัวเองว่าการเปลี่ยนแปลงที่ขัดแย้งเหล่านี้คุ้มค่าหรือไม่ แต่บางทีการเปลี่ยนแปลงพื้นฐานเหล่านี้อาจเป็นแรงบันดาลใจให้คุณ
สำหรับการใช้งานฟังก์ชั่นที่ยอดเยี่ยมอื่น ๆ เช่นลบและวางลบโดยไม่ต้องคัดลอกไปยังคลิปบอร์ดการเคลื่อนไหว 4x / 16x ที่มีประสิทธิภาพการใช้การนับเพื่อวางข้อกำหนดการลงทะเบียนการตั้งค่าแท็บที่ใช้งานได้จริงสำหรับ c / c ++ และอื่น ๆ คุณสามารถตรวจสอบได้ ใช้. emacs, init.el, my-keymaps.el และ my-functions.el แบบเต็มบน git ของฉันได้ที่https://github.com/Russell91/emacs