Saya menggunakan vim yang sangat disesuaikan, dan sekarang menggunakan emacs yang lebih disesuaikan. Saya pikir Anda akan menemukan setiap contoh keymapping di file konfigurasi keymapping saya https://github.com/mbriggs/.emacs.d-oldv2/blob/master/init/init-keymaps.el
Perlu diingat, saya me-rebinding hal-hal yang akan dianggap oleh pengguna emacs nyata sebagai bid'ah, jadi YMMV jika Anda ingin mempelajari emacs "asli" (saya benar-benar tidak melakukannya).
Satu hal yang saya rekomendasikan kepada mantan vimmer adalah ini
;;; esc quits
(defun minibuffer-keyboard-quit ()
"Abort recursive edit.
In Delete Selection mode, if the mark is active, just deactivate it;
then it takes a second \\[keyboard-quit] to abort the minibuffer."
(interactive)
(if (and delete-selection-mode transient-mark-mode mark-active)
(setq deactivate-mark t)
(when (get-buffer "*Completions*") (delete-windows-on "*Completions*"))
(abort-recursive-edit)))
(define-key evil-normal-state-map [escape] 'keyboard-quit)
(define-key evil-visual-state-map [escape] 'keyboard-quit)
(define-key minibuffer-local-map [escape] 'minibuffer-keyboard-quit)
(define-key minibuffer-local-ns-map [escape] 'minibuffer-keyboard-quit)
(define-key minibuffer-local-completion-map [escape] 'minibuffer-keyboard-quit)
(define-key minibuffer-local-must-match-map [escape] 'minibuffer-keyboard-quit)
(define-key minibuffer-local-isearch-map [escape] 'minibuffer-keyboard-quit)
sehingga esc benar-benar berhenti dari apa pun (seperti perintah tertunda di minibuffer)
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:
Sayangnya, ini tumpang tindih dengan operasi vim "pindah satu layar ke atas atau ke bawah". Namun, saya menjadi nyaman menggunakan yang berikut ini:
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:
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:
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
sumber
less
perintah dan lainnya).evil
, saya menghapusnya, sehingga kembali ke pengaturan keyboard emacs normal, misalnya(dolist (m (list evil-normal-state-map evil-motion-state-map evil-insert-state-map)) (define-key m "\C-e" 'nil))
Saya juga pernah menjadi pengguna Viper / Vimpulse, dengan konfigurasi yang sangat besar . Kemudian saya menemukan mode-Jahat.
Ini adalah seluruh konfigurasi mode jahat saya, dan ini berfungsi dengan baik untuk saya:
Tidak, berbeda dengan Viper / Vimpulse yang menyebabkan masalah di beberapa mode.
sumber
evil-emacs-state
Saya mulai menggunakan Evil sebulan yang lalu; sebelumnya, saya mencoba menggunakan viper / vimpulse tanpa banyak hasil. Sejujurnya, vimpulse cukup bagus, tetapi menggunakannya dengan berbagai mode agak merepotkan (misalnya mode kompilasi di mana vimpulse selalu gila) meninggalkan emacs dalam beberapa mode antara vi-emacs-sesuatu.
Ketika saya beralih ke Evil, saya akhirnya mulai mengeksplorasi kekuatan Emacs penuh, dan percayalah, saya tidak menyesal. Kejahatan bekerja dengan baik di semua mode yang saya gunakan (kebanyakan mengedit, kompilasi, goresan dan eshell) dan bahkan membaca info / man / help bekerja tanpa masalah.
Kecuali itu, saya hanya menemukan buffer switching yang aneh seperti yang biasa saya lakukan: b <0-9> sebagai gantinya: b-TAB-then-complete-name or: bn. Namun perlu dicatat bahwa pengembang jahat mencoba (dalam beberapa kasus) untuk mengurangi fungsi duplikat, jadi sebagai gantinya:! (untuk perintah exec shell), Anda harus menggunakan native M- !.
Jika Anda merasa ingin menambahkan / mendefinisikan ulang beberapa perintah ex khusus, cukup buka evil-maps.el dan edit (coba di vim!).
Evil masih muda tetapi proyek menjanjikan dan saya menunggu hari kapan akan menggantikan viper dalam distribusi resmi Emacs.
sumber
Saya suka menyimpan buffer ketika saya keluar dari
insert-mode
: (diedit: jangan minta untuk menyimpan ketika tidak ada file terkait untuk buffer ini, seperti ketika di awal atau buffer magit)untuk kemungkinan lainnya: lihat http://wikemacs.org/index.php/Evil
Komentar diterima untuk perbaikan!
sumber
Saya menggunakan pemimpin jahat dan menggunakan ", xm" untuk menggantikan "Mx", jadi saya jarang menekan tombol Alt. Ada juga general.el yang mendukung beberapa kunci pemimpin.
evil-matchit , tekan "%" untuk beralih di antara pasangan tag.
evil-nerd-commenter , tekan "9, ci" untuk mengomentari / menghapus komentar 9 baris
hindari menggunakan tombol ESC, Anda dapat menekan "kj" sebagai gantinya.
Percayalah pada perangkat lunak gratis! Tidak ada yang mustahil dengan Evil yang menggabungkan kekuatan Vim dan Emacs. Misalnya, banyak orang beranggapan bahwa keybindings Evil bertentangan dengan plugin Emacs yang ada tanpa pengikatan ulang yang berat. Sebenarnya itu salah
sumber
Dari sisi emacs, saya sangat menyukai M-. menjadi go-to-definition, tetapi fungsi yang berjalan pada
M-.
mode berbeda-beda. Aku bisa menimpa dalam cara biasa dengan(define-key evil-normal-state-map (kbd "M-.") 'foo)
manafoo
cek modus utama saat ini dan menjalankan fungsi yang sesuai, tapi itu suara seperti itu akan membutuhkan banyak hardcoding. Solusi yang lebih umum adalah ini:Selain itu, saya suka plugin evil-surround (meskipun saya merasa smartparens adalah solusi yang lebih lengkap) dan pemimpin jahat .
Saya dulu menggunakan key-chord untuk memetakan jk ke ESC seperti yang telah saya pelajari di vim, tetapi bersikeras memperlakukan kj sama dengan jk, jadi saya menggunakan yang berikut ini:
saya menggunakan
(setq evil-move-cursor-back nil)
yang tidak terlalu jelas (meskipun tampaknya Anda dapat membuat vimrc Anda melakukan itu juga), saya tidak pernah terbiasa dengan kursor yang bergerak kembali setelah keluar dari penyisipan.Tip praktis: gunakan
evil-local-mode-hook
untuk hal-hal seperti malas memuat mode surround-jahat, itu tidak akan membantu untuk menjelaskannyaevil-mode-hook
. Jadi jika Anda menginstal evil dan evil-surround dengan paket-instal, Anda dapat memulainya saatM-x evil-mode
melakukannya(Tentu saja, jika Anda selalu menjalankan mode jahat dan selalu menginstal jahat, hal itu tidak perlu dimuat otomatis, tetapi saya lebih suka agar .emacs saya cukup umum sehingga saya dapat menggunakannya pada mesin dengan emacsen lama atau tanpa memiliki paket elpa diinstal.)
sumber