Je connais plusieurs implémentations vim différentes dans Emacs. Il y a le mode diabolique, viper, vimpulse et vim-mode. Y en a-t-il d'autres? Comment se comparent-ils?
Je note qu'il existe de nombreux evil-*
packages sur MELPA, suggérant qu'aucun d'entre eux n'est complet à 100%. Quelles fonctionnalités vim proposent-elles et quelles sont les fonctionnalités vim manquantes?
(Je ne suis pas intéressé par l'inverse où " un ensemble de macros vi qui [sont] une implémentation Emacs assez complète "!)
vim-emulation
Wilfred Hughes
la source
la source
Réponses:
vi
,vip
Etviper
(triés par date de création) viennent intégré avec Emacs, tous ceux Emuler VI.vim-mode
est un effort autonome plus récent pour réellement émuler Vim,vimpulse
est un ensemble d'extras en plus deviper
donner l'une des fonctionnalités Vim les plus utiles.evil
a été créé en remplacement devim-mode
.evil
est le projet le plus récent et le seul qui soit activement développé. Son objectif est d'émuler fidèlement le modèle d'édition de Vim, en tirant parti des fonctionnalités Emacs existantes partout où cela est possible. Personnellement, je dirais qu'il est terminé à environ 90%, car quelques commandes nouvelles (telles quegn
) sont manquantes, certaines fonctionnalités liées à l'affichage sont assez difficiles à recréer (comme l'affichage des tildes après la fin d'un fichier) et ne l'implémentant pas un interpréteur Vimscript ou quoi que ce soit au-delà des bases du mode Ex. Cependant, il est plus facile à étendre et à introspecter que l'original, lesevil-*
extensions sont les équivalents Emacs aux plugins Vim dans presque tous les cas (evil-leader
par exemple, ce serait une exception car il n'est pas nécessaire de proposer la prise en charge de la carte de touches Emacs).Considérant que
evil
Vim surpasse certains points (voir:s
et son aperçu visuel ou le peu d'effort que pose la création d'un nouveau mode utile ), je le recommande sans réserve à tous ceux qui s'intéressent à l'édition modale pour Emacs.la source
g/
être un nouveau commandement à Vim. Je ne l'ai jamais vu et je ne trouve aucune documentation à ce sujet. Que fait-il à Vim?gn
. Il transforme les résultats de la recherche en objet texte. En outre, il a été mis en œuvre maintenant.Étant donné que
evil
c'est le seul mode d'émulation vim développé activement à ma connaissance, je vais rendre ma réponse spécifique au mal.evil
est très utilisable et très proche d'une expérience de type vim, mais il existe certaines fonctionnalités de vim qui ne seront probablement pas implémentées (par conception) et d'autres qui sont incomplètes mais pourraient être ajoutées éventuellement. Quelques exemples de choses qui ne seront probablement pas ajoutées:C-a
etC-x
) ne seront pas ajoutées carC-x
c'est trop important pour une liaison de touches Emacs.\
est liéevil-execute-in-emacs-state
par défaut.C-u
n'est pas obligé de faire défiler vers le haut par défaut, car il est trop important en tant que liaison de clés Emacs (bien que vous puissiez l'écraser avecevil-want-C-u-scroll
).Pour trouver une liste des fonctionnalités de vim qui ne sont pas encore implémentées (au moment de la rédaction de cette réponse), le meilleur endroit pour chercher est le tracker de problème . Un échantillon aléatoire des choses qui sont sur la liste:
ex
n'est pas implémenté .:make
n'est pas mappé àM-x compile
.C-o
eninsert
mode ne se comporte pas tout à fait comme dans vim .Il y en a beaucoup plus, y compris des commandes qui ne sont pas dans la liste des problèmes ouverts (particulièrement les
ex
commandes compliquées ), mais comme vous pouvez le voir dans la liste, elles ont tendance à être des fonctionnalités de vim assez mineures ou obscures (vim est une cible assez large avec laquelle atteindre 100% de parité).la source
Le but du Mal est d'émuler Vim, alors que le but de Viper est d'émuler Vi. Vim-mode et Vimpulse sont les prédécesseurs de Evil et à ma connaissance ne sont plus développés. Le projet Evil a été lancé pour combler les lacunes de ces projets.
la source