Soy consciente de varias implementaciones de vim diferentes en Emacs. Hay modo malvado, víbora, vimpulse y modo vim. ¿Hay otros? ¿Cómo se comparan?
Observo que hay muchos evil-*paquetes en MELPA, lo que sugiere que ninguno de ellos tiene el 100% de funciones completas. ¿Qué características de vim proporcionan y qué características de vim faltan?
(¡No estoy interesado en el reverso donde " un conjunto de macros vi que [son] una implementación bastante completa de Emacs "!)
vim-emulation
Wilfred Hughes
fuente
fuente

Respuestas:
vi,vipyviper(ordenado por fecha de creación) vienen integrados con Emacs, todos esos emulan VI.vim-modees un esfuerzo más nuevo e independiente para emular realmente a Vim,vimpulsees un conjunto de extras además deviperdarle una de las características más útiles de Vim.evilfue creado como reemplazo devim-mode.eviles el proyecto más reciente y el único que se desarrolla activamente. Su objetivo es emular fielmente el modelo de edición de Vim, aprovechando la funcionalidad Emacs existente siempre que sea posible. Personalmente, diría que está completado en un 90%, porquegnfaltan algunos comandos nuevos (como ), algunas funciones relacionadas con la visualización son bastante difíciles de recrear (como la visualización de tildes después del final de un archivo) y no se implementa un intérprete de Vimscript o cualquier cosa más allá de los conceptos básicos del modo Ex. Sin embargo, es más fácil de ampliar e introspectar que el original, lasevil-*extensiones son el equivalente de Emacs a los complementos de Vim en casi todos los casos (evil-leaderpor ejemplo, sería una excepción porque no es necesario ofrecer considerando la compatibilidad con el mapa de teclas de Emacs).Teniendo en cuenta que
evilestá superando a Vim en ciertos puntos (ver:sy su vista previa visual o el poco esfuerzo que supone crear un nuevo modo útil ), lo recomiendo de todo corazón a todos los interesados en la edición modal para Emacs.fuente
g/ser un comando nuevo en Vim. Nunca lo he visto, y no puedo encontrar ninguna documentación al respecto. ¿Qué hace en Vim?gn. Convierte los resultados de búsqueda en un objeto de texto. Además, ya se ha implementado.Dado que
eviles el único modo de emulación vim desarrollado activamente, que yo sepa, haré que mi respuesta sea específica del mal.eviles altamente utilizable y muy cercano a una experiencia similar a vim, pero hay algunas características de vim que probablemente no se implementarán (por diseño) y algunas que están incompletas pero que podrían agregarse eventualmente. Algunos ejemplos de cosas que probablemente no se agregarán:C-ayC-x) no se agregarán porqueC-xes demasiado importante para una combinación de teclas de Emacs.\está obligadoevil-execute-in-emacs-statepor defecto.C-uno está obligado a desplazarse hacia arriba de forma predeterminada porque es demasiado importante como una combinación de teclas de Emacs (aunque puede sobrescribir esto conevil-want-C-u-scroll).Para encontrar una lista de características de vim que aún no están implementadas (al momento de escribir esta respuesta), el mejor lugar para buscar es el rastreador de problemas . Una muestra aleatoria de cosas que están en la lista:
exno está implementado .:makeNo se asigna aM-x compile.C-oeninsertmodo no se comporta como lo hace en vim .Hay muchos más, incluidos los comandos que no están en la lista de problemas abiertos (especialmente los
excomandos complicados ), pero como puede ver en la lista, tienden a ser características vim bastante menores u oscuras (vim es un objetivo bastante grande con el cual lograr el 100% de paridad de características).fuente
El objetivo de Evil es emular a Vim, mientras que el objetivo de Viper es emular a Vi. Vim-mode y Vimpulse son los predecesores de Evil y, que yo sepa, ya no se desarrollan. El proyecto Evil se inició para abordar las deficiencias de estos proyectos.
fuente