Estou ciente de várias implementações diferentes do vim no Emacs. Existe o modo maligno, o viper, o vimpulse e o modo vim. Existem outros? Como eles se comparam?
Observo que há muitos evil-*
pacotes no MELPA, sugerindo que nenhum deles é 100% completo. Quais recursos do vim eles fornecem e quais recursos do vim estão ausentes?
(Não estou interessado no inverso, onde " um conjunto de vi macros que são uma implementação bastante completa do Emacs "!)
vim-emulation
Wilfred Hughes
fonte
fonte
Respostas:
vi
,vip
eviper
(ordenados pela data de criação) são integrados ao Emacs, todos emulando VI.vim-mode
é um esforço mais novo e independente para simular o Vim,vimpulse
é um conjunto de extrasviper
para oferecer um dos recursos mais úteis do Vim.evil
foi criado como substituto paravim-mode
.evil
é o projeto mais recente e o único desenvolvido ativamente. Seu objetivo é emular fielmente o modelo de edição do Vim, aproveitando a funcionalidade existente do Emacs sempre que possível. Pessoalmente, eu diria que está cerca de 90% completo, porquegn
faltam alguns comandos recentes (como ), algumas funcionalidades relacionadas à exibição são difíceis de recriar (como a exibição de tildes após o final de um arquivo) e não são implementadas um intérprete Vimscript ou qualquer coisa além dos conceitos básicos do modo Ex. No entanto, é mais fácil estender e introspectar do que o original, asevil-*
extensões são o equivalente do Emacs aos plugins do Vim em quase todos os casos (evil-leader
por exemplo, seria uma exceção, porque não é necessário oferecer considerando o suporte ao mapa de teclas do Emacs).Considerando que
evil
está ultrapassando o Vim em alguns pontos (veja:s
e sua visualização visual ou quão pouco esforço cria um novo modo útil ), recomendo sinceramente a todos os interessados em edição modal para o Emacs.fonte
g/
ser um comando newish no Vim. Eu nunca vi isso e não consigo encontrar nenhuma documentação. O que isso faz no Vim?gn
. Transforma resultados da pesquisa em um objeto de texto. Além disso, já foi implementado até agora.Como
evil
é o único modo de emulação de vim desenvolvido ativamente para o meu conhecimento, tornarei minha resposta específica para o mal.evil
é altamente utilizável e muito próximo a uma experiência semelhante ao vim, mas existem alguns recursos do vim que provavelmente não serão implementados (por design) e outros incompletos, mas que poderão ser adicionados eventualmente. Alguns exemplos de coisas que provavelmente não serão adicionadas:C-a
eC-x
) não serão adicionados porqueC-x
é muito importante para a vinculação de teclas do Emacs.\
é vinculadoevil-execute-in-emacs-state
por padrão.C-u
não é obrigado a rolar para cima por padrão, porque é muito importante como uma ligação de teclas do Emacs (embora você possa sobrescrever issoevil-want-C-u-scroll
).Para encontrar uma lista dos recursos do vim que ainda não foram implementados (no momento em que escrevemos esta resposta), o melhor lugar para procurar é o rastreador de problemas . Uma amostra aleatória das coisas que estão na lista:
ex
não está implementado .:make
não está mapeado paraM-x compile
.C-o
noinsert
modo não se comporta exatamente como no vim .Existem muitos outros, incluindo comandos que não estão na lista de problemas abertos (
ex
comandos especialmente complicados ), mas como você pode ver na lista, eles tendem a ser recursos do vim razoavelmente pequenos ou obscuros (o vim é um destino bastante amplo com o qual atingir 100% de paridade de recursos).fonte
O objetivo do mal é imitar o Vim, enquanto o objetivo do Viper é imitar o Vi. Vim-mode e Vimpulse são os predecessores do mal e, até onde sei, não são mais desenvolvidos. O projeto Evil foi iniciado para solucionar as deficiências desses projetos.
fonte