Emacs e Vim são os dois editores de texto mais usados em
O Vim usa modos de edição - geralmente o modo de comando e modo de inserção. O Vim visa minimizar o número de pressionamentos de teclas que um usuário deve pressionar, porque o vi, no qual o Vim se baseia, foi projetado para ser usado em terminais lentos.
O Emacs usa teclas modificadoras para ativar atalhos, o que geralmente envolve pressionar várias teclas simultaneamente para uma única função. Esse aspecto do Emacs é frequentemente criticado.
O Emacs é mais fácil de aprender, pois possui uma interface mais natural (para usuários familiarizados com editores de texto baseados em GUI). Como o Vim possui diferentes modos de edição, os iniciantes acham um pouco mais difícil aprender.
Os entusiastas do Vim argumentam que, uma vez que um usuário se familiariza com os modos e comandos de edição do Vim, ele permite uma produtividade e eficiência muito maiores. A edição de arquivos geralmente é mais rápida com o Vim do que com o Emacs, devido à interface orientada por velocidade do Vim. Por exemplo, o movimento do cursor pode ser controlado através do H, J, K, e eu chaves no modo normal. Isso significa que as mãos do usuário não precisam sair da posição de "linha inicial", o que melhora a eficiência, mas tem o preço de adicionar sobrecarga, pois a troca de modo é necessária para escolher entre movimento e edição de texto. No Emacs (com a configuração padrão), o usuário move o cursor com os atalhos Ctrl-B ou Ctrl-F, o que pode desacelerar o usuário iniciante, pois é necessário pressionar duas teclas. As melhorias de produtividade e eficiência no Emacs dependem da configuração do ambiente de edição e não do próprio editor.
O Vim é mais leve que o Emacs e usa menos memória. Os advogados do Vim criticam o consumo de recursos do Emacs com a sugestão explícita de que o Emacs significa "oitenta megabytes e troca constante".
No entanto, com o gnuclient, um único processo persistente do Emacs pode ser executado para suportar vários clientes simultaneamente. Isso acelera o tempo de inicialização e diminui o uso total de memória, fechando a lacuna entre o Emacs e o Vim.
Enquanto o Vim e o Emacs suportam plugins que aprimoram sua funcionalidade, o Emacs suporta muito mais personalização do ambiente do editor. Esta é sem dúvida a característica mais importante do emacs e é responsável por grande parte dos seguintes seguidores dedicados do emacs.
O Emacs pode ser estendido no elisp, enquanto o Vim possui sua própria linguagem de script interna e suporta o uso de outras linguagens de programação para o desenvolvimento de plugins..
O Emacs pode ser estendido rapidamente, redefinindo as funções internas do elisp, digitando a nova definição no Emacs ou carregando os arquivos elisp. Grupos de alterações relacionadas são chamados de "modos" e podem ser facilmente configurados para serem usados automaticamente para tipos específicos de arquivos (buffers). Portanto, é fácil definir modos para diferentes linguagens de programação ou estruturas, como "modo lisp" ou "modo Ruby on Rails" ou "modo PHP". Esses modos podem modificar diretamente até os comportamentos principais do Emacs, formatar ou colorir automaticamente o texto e adicionar texto padrão ou modelo padrão, como declarações de função e fechamento. Portanto, os programadores consideram o Emacs muito mais personalizável para seus requisitos específicos do que o Vim. No entanto, alguns programadores podem achar que o Vim é mais adequado ao seu ambiente de programação devido à sua operação igualmente personalizável e totalmente modal.
O Vim também pode ser estendido em tempo real usando o modo de comando. O modo de comando permite definir opções de configuração, funções a serem definidas e macros a serem feitas. De fato, os arquivos de configuração do Vim são apenas comandos que podem ser inseridos através do modo de comando.
O Vim e o Emacs têm interfaces gráficas de usuário. Praticamente todos os itens de menu na interface gráfica para ambos os editores são simplesmente maneiras de lidar com um comando de atalho ou uma configuração rápida. As GUIs dos editores não fornecem praticamente nenhuma função adicional além daquelas disponíveis na CLI (interface da linha de comandos)
O Emacs usa XDisplay ou gtk2 para sua GUI. O Vim pode usar muitas outras bibliotecas da GUI, como gtk, gnome, gnome2, motif, athena e neXtaw, além do gtk2.