Usé un vim altamente personalizado y ahora uso un emacs aún más personalizado. Creo que encontrará cada instancia de keymapping en mi archivo de configuración de keymapping https://github.com/mbriggs/.emacs.d-oldv2/blob/master/init/init-keymaps.el
Tenga en cuenta que estoy volviendo a unir cosas que los usuarios reales de emacs considerarían herejía, así que YMMV si alguna vez quiere aprender emacs "reales" (realmente no lo hago).
Una cosa que recomendaría a cualquier ex vimmer es esto
;;; 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)
de modo que esc realmente cierra prácticamente cualquier cosa (como indicaciones pendientes en el minibúfer)
Como alguien que vino de emacs, probó vim y se dio cuenta de que había una gran cantidad de cosas que ganar, experimenté mucho cuando comencé a usar el mal. Si bien lo siguiente es controvertido, quería mantener las claves de emacs que se usan de manera más universal en terminal, firefox, cocoa, etc., pero no quería perder las capacidades de edición de vim. Terminé decidiendo volver a enlazar las siguientes claves en mi .emacs:
Desafortunadamente, estos se superponen con las operaciones de vim "mover una pantalla hacia arriba o hacia abajo". Sin embargo, me he sentido cómodo usando lo siguiente en su lugar:
Además, si viene de vim y desea una ruta rápida desde la inserción al modo normal usando "jk" (o cualquier otra combinación de 2 trazos), la mejor manera es copiar el texto de http://www.emacswiki.org/ emacs / download / key-chord.el y péguelo en su ~ / .emacs.d / key-chord.el. Luego agregue lo siguiente a su .emacs:
Además, si viene de vim y cree que la copia al portapapeles en emacs no es buena, probablemente tenga razón. Sin embargo, puede resultarle útil lo siguiente después de ejecutar sudo apt-get install xsel:
Obviamente, tendrás que decidir por ti mismo si alguno de estos controvertidos cambios vale la pena, pero quizás estos cambios básicos te inspiren.
Para algunas otras implementaciones de funciones realmente interesantes, como eliminar y pegar, eliminar sin copiar al portapapeles, movimiento eficiente 4x / 16x, uso de recuentos para la especificación de registro de pegado, configuraciones de pestañas que realmente funcionan para c / c ++, y más, puede verificar los .emacs completos, init.el, my-keymaps.el y my-functions.el versons en mi git en https://github.com/Russell91/emacs
fuente
less
command y otros).evil
, lo elimino, por lo que vuelve a la configuración del teclado de emacs normales, por ejemplo(dolist (m (list evil-normal-state-map evil-motion-state-map evil-insert-state-map)) (define-key m "\C-e" 'nil))
También solía ser un usuario de Viper / Vimpulse, con una gran cantidad de configuración. Entonces encontré el modo Evil.
Esta es toda mi configuración de modo maligno, y funciona muy bien para mí:
No, a diferencia de Viper / Vimpulse, que estaba causando problemas en varios modos.
fuente
evil-emacs-state
Empecé a usar Evil hace un mes; antes, intenté usar viper / vimpulse sin mucho éxito. Para ser honesto, vimpulse es bastante bueno, pero usarlo con varios modos fue un poco problemático (por ejemplo, el modo de compilación donde vimpulse siempre se volvía loco) dejando a emacs en algún modo entre vi-emacs-algo.
Cuando cambié a Evil, finalmente comencé a explorar todo el poder de Emacs, y créanme, no me arrepiento. Evil funciona muy bien en todos los modos que utilicé (principalmente edición, compilación, scratch y eshell) e incluso leer info / man / help funciona sin problemas.
Excepto que, solo encontré el cambio de búfer extraño como solía hacer: b <0-9> en su lugar: b-TAB-then-complete-name o: bn. Sin embargo, tenga en cuenta que los desarrolladores de Evil intentan (en algunos casos) reducir las funcionalidades duplicadas, así que en su lugar:! (al comando de shell ejecutivo), debe usar M-! nativo.
Si siente la necesidad de agregar / redefinir algunos comandos ex personalizados, simplemente abra evil-maps.el y edítelo (¡pruébelo en vim!).
Evil es todavía un proyecto joven pero prometedor y estoy esperando el día en que reemplace a viper en la distribución oficial de Emacs.
fuente
Me gusta guardar el búfer cuando salgo del
insert-mode
: (editado: no pida guardar cuando no hay un archivo asociado para este búfer, como cuando estoy en un scratch o en un búfer magit)para más posibilidades: consulte http://wikemacs.org/index.php/Evil
¡Comentarios bienvenidos para mejoras!
fuente
Yo uso el líder malvado y uso ", xm" para reemplazar "Mx", por lo que rara vez presiono la tecla Alt. También existe general.el, que admite múltiples claves de líder.
evil-matchit , presione "%" para saltar entre pares de etiquetas.
evil-nerd-commenter , presione "9, ci" para comentar / descomentar 9 líneas
evite usar la tecla ESC, puede presionar "kj" en su lugar.
¡Tenga fe en el software libre! Nada es imposible con Evil, que combina el poder de Vim y Emacs. Por ejemplo, muchas personas asumen que las combinaciones de teclas Evil entran en conflicto con los complementos existentes de Emacs sin volver a vincularse fuertemente. Eso está mal en realidad
fuente
Viniendo del lado de emacs, prefiero mucho M-. para ir a la definición, pero la función que se ejecuta
M-.
difiere entre los modos. Podría anularlo de la forma habitual con(define-key evil-normal-state-map (kbd "M-.") 'foo)
wherefoo
comprueba el modo principal actual y ejecuta la función adecuada, pero parece que requeriría mucha codificación. Una solución más general es esta:Aparte de eso, me gustan los complementos evil-surround (aunque creo que smartparens es una solución más completa) y evil-leader .
Solía usar key-chord para mapear jk a ESC como aprendí a hacer en vim, pero insistía en tratar kj como lo mismo que jk, así que en su lugar estoy usando lo siguiente:
Yo uso
(setq evil-move-cursor-back nil)
que no es muy vimmy (aunque aparentemente puedes hacer que tu vimrc también lo haga), nunca me acostumbré a que el cursor se mueva hacia atrás después de salir de la inserción.Consejo práctico: utilícelo
evil-local-mode-hook
para cosas como carga diferida en modo envolvente maligno, no ayudará ponerlo en claroevil-mode-hook
. Entonces, si instala evil y evil-surround con package-install, puede hacer que comience cuando lo hagaM-x evil-mode
haciendo(Por supuesto, si siempre ejecuta el modo malvado y siempre tiene mal instalado, no hay necesidad de ese material de carga automática, pero prefiero que mi .emacs sea lo suficientemente general como para poder usarlo en máquinas con emacsen antiguo o sin paquetes elpa instalados.)
fuente