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
,vip
yviper
(ordenado por fecha de creación) vienen integrados con Emacs, todos esos emulan VI.vim-mode
es un esfuerzo más nuevo e independiente para emular realmente a Vim,vimpulse
es un conjunto de extras además deviper
darle una de las características más útiles de Vim.evil
fue creado como reemplazo devim-mode
.evil
es 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%, porquegn
faltan 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-leader
por 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
evil
está superando a Vim en ciertos puntos (ver:s
y 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
evil
es el único modo de emulación vim desarrollado activamente, que yo sepa, haré que mi respuesta sea específica del mal.evil
es 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-a
yC-x
) no se agregarán porqueC-x
es demasiado importante para una combinación de teclas de Emacs.\
está obligadoevil-execute-in-emacs-state
por defecto.C-u
no 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:
ex
no está implementado .:make
No se asigna aM-x compile
.C-o
eninsert
modo 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
ex
comandos 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