Introdução
Provavelmente você nunca ouviu falar do Emacs ou Vim, especialmente se você está começando sua carreira em engenharia de software.
É também normal que, como usuário do sistema operacional Windows, você tenha trabalhado apenas com o bloco de notas, o Notepad ++, o Sublime Text, o Visual Studio Code e todos os outros editores de texto comuns.
O sistema operacional Linux, Emacs e vi são os principais editores usados para manipular arquivos. Ambos são os principais gladiadores na guerra de editores populares que começou no final dos anos 90.
Hoje em dia, os concorrentes mais quentes em software de tecnologia são os navegadores da web. O Internet Explorer, o Firefox e o Chrome estão competindo por um mercado maior na guerra figurativa do navegador.
As guerras santas também existem em todas as esferas da vida, especialmente na cultura pop: iPhone vs Android, Marvel vs DC, Coke vs Pepsi, e assim por diante.
Guerras de Editores de Texto
A guerra entre editores é a rivalidade entre usuários dos editores de texto Emacs e vi (agora geralmente Vim, ou mais recentemente Neovim). A rivalidade se tornou uma parte duradoura da cultura hacker e da comunidade de software livre.
Desde pelo menos 1985, o debate Emacs versus vi foi uma das “guerras santas” originais, mesmo antes da internet. Muitos usuários insistiam que seu editor de escolha era o paragão da perfeição de edição, e insultavam o outro. Batalhas tecnológicas semelhantes foram travadas sobre sistemas operacionais, linguagens de programação, sistemas de controle de versão e até mesmo estilo de recuo de código fonte.
Vamos olhar para os dois editores e analisar suas características e jargão.
Emacs
Emacs (Editor Macros) foi desenvolvido por David A Moon em 1976, tornando-o um dos mais antigos softwares que existem hoje. O GNU Emacs, a variante (fork) mais usada do Emacs, foi lançada em 1985 por Richard Stallman, o fundador do GNU/Linux.
O Emacs é um editor de texto altamente avançado, extensível e personalizável que também oferece uma interpretação da linguagem de programação Lisp em seu núcleo. Diferentes extensões podem ser adicionadas para suportar funcionalidades de edição de texto.
O Emacs possui as seguintes características:
- Documentação de usuário e tutoriais
- Realce de sintaxe usando cores, mesmo para texto simples.
- Unicode suporta muitas línguas naturais.
- Várias extensões, incluindo e-mail e notícias, interface de depurador, calendário e muito mais.
Você pode encontrar comandos básicos do emac aqui.
Vi(m)
Vim (Vi Improved), como o nome sugere, é um clone melhorado do editor de texto. O editor de texto foi originalmente desenvolvido por Billy Joy em 1976 para o sistema operacional proprietário Unix. Bram Moolenar melhorou posteriormente e o lançou como Vim em 1991.
vivim
Vim é um poderoso editor de texto baseado em linha de comando que aprimorou as funcionalidades do antigo editor de texto Unix Vi. É um dos editores de texto mais populares e amplamente utilizados entre administradores de sistema e programadores, é por isso que muitos usuários frequentemente o referem como um editor de programador. Ele permite destacar a sintaxe ao escrever código ou editar arquivos de configuração.
O editor vi do UNIX é um editor de tela cheia e tem dois modos de operação:
- Comandos de modo de comando que causam ação a ser tomada no arquivo, e
2. Modo de inserção no qual o texto digitado é inserido no arquivo. No modo de comando, cada caractere digitado é um comando que faz algo com o arquivo de texto sendo editado; um caractere digitado no modo de comando pode até mesmo fazer com que o editor vi entre no modo de inserção
Enquanto há vários comandos vi, apenas algumas dessas são geralmente suficientes para usuários iniciantes do vi. No modo de inserção, cada caractere digitado é adicionado ao texto no arquivo; pressionar a tecla (Escape) desativa o modo de inserção.
Enquanto existem vários comandos vi, apenas algumas dessas são suficientes para usuários iniciantes do vi.
Você pode encontrar comandos básicos do vi aqui.
O Vim também é usado com o Kubernetes para operações de desenvolvedor (devops), especialmente para o Exame de Desenvolvedor de Aplicações Certificado do Kubernetes.
Similaridades entre Emacs e Vi
- As abas de buffer são suportadas tanto na linha de comando quanto na interface gráfica do usuário.
- Editores de texto multiplataforma, incluindo Unix, Linux e Microsoft Windows.
- Disponível em inglês, chinês, francês, italiano, polonês, russo e ainda mais idiomas.
Diferenças entre Emacs e Vi.
- Interface do usuário e Ambiente
Vim usa modos de edição – mais comumente o modo de comando e o modo de inserção. O Vim visa minimizar o número de teclas que um usuário precisa pressionar, pois o vi, sobre o qual o Vim é baseado, foi projetado para ser usado em terminais lentos.
O Emacs usa teclas modificadoras para ativar atalhos, o que muitas vezes envolve pressionar várias teclas ao mesmo tempo para uma única função. Esse aspecto do Emacs é frequentemente criticado.
À medida que a tecnologia de computadores foi desenvolvida, novas inovações como a GUI (Interface Gráfica do Usuário) foram desenvolvidas. O Emacs adaptou-se e desenvolveu sua própria GUI para tornar mais fácil para as pessoas aprenderem e usarem o editor. Em comparação, o Vi não desenvolveu sua própria GUI. Isso se deve, em parte, à aparição de variantes do Vi que tomaram o lugar.
Um bom exemplo é o Vi iMproved, também conhecido como Vim, que gradualmente se tornou mais popular do que o Vi, pois adicionou mais recursos e melhorias que não são encontrados no Vi. Também existem variantes do Emacs, mas essas não causaram o descaso do software.
- Facilidade de Aprendizagem
O Emacs é mais fácil de aprender, pois tem uma interface mais natural (para usuários familiarizados com editores de texto baseados em GUI). Como o Vim tem diferentes modos de edição, os iniciantes acham um pouco mais difícil de aprender.
- Produtividade e Velocidade de Edição
A principal diferença entre os dois é a velocidade. O Vim tem historicamente sido o mais rápido dos dois, iniciando em menos tempo e é geralmente o mais responsivo dos dois.
Os entusiastas do Vim argumentam que, uma vez que o usuário se familiariza com os modos de edição e comandos do Vim, isso permite uma maior produtividade e eficiência. A edição de arquivos é geralmente mais rápida com o Vim do que com o Emacs, devido à interface propositalmente orientada para a velocidade do Vim. Por exemplo, o movimento do cursor pode ser controlado pelas teclas H, J, K e L no modo normal. Isso significa que as mãos do usuário não precisam sair da posição da “linha de casa”, o que melhora a eficiência, mas vem a um preço de adicionar overhead, pois é necessário alternar entre o modo de 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, já que são necessárias duas teclas para serem pressionadas. Melhorias na produtividade e eficiência no Emacs dependem da configuração do ambiente de edição, e não do próprio editor.
- Uso de RAM do Emacs vs Vim.
Vim também consome muito menos memória do que o Emacs; isso numa época em que 8MB é considerado uma grande quantidade de RAM. Vim é mais leve que o Emacs e usa menos memória. Os defensores do Vim criticam o consumo de recursos do Emacs com a sugestão irônica de que Emacs significa “Oitenta Megabytes e Constante Troca”.
No entanto, com o GNUclient, pode ser executado um único processo persistente do Emacs que pode suportar vários clientes simultaneamente. Isso acelera o tempo de inicialização e diminui o uso total de memória, reduzindo a diferença entre o Emacs e o Vim.
- Extensibilidade e Customização do Emacs vs Vim
A vantagem do Emacs sobre o Vi é sua extensa personalização. O Emacs permite que o usuário escolha entre uma ampla variedade de macros para integrar em seu fluxo de trabalho e reduzir o esforço necessário em seu processo.
Vi falta esse nível de personalização e confia em seu processo simples e direto. O Emacs também é capaz de emular o Vi no que eles chamam de “modo viper”; tornando mais fácil para os usuários do Vi usar o Emacs. Vi, com sua simplicidade, carece de tais capacidades.
Ambos o Vim e o Emacs suportam plugins que aprimoram sua funcionalidade, mas o Emacs suporta muito mais personalização do ambiente do editor. Esta é provavelmente a característica mais importante do Emacs e é responsável por muito do seguimento devotado ao Emacs.
Emacs pode ser estendido em tempo real, redefinindo funções internas de elisp, digitando a nova definição no Emacs ou carregando arquivos elisp. Grupos de mudanças relacionadas são chamados de “modos” e podem ser facilmente configurados para serem automaticamente usados para determinados tipos de arquivos (buffers). É fácil definir modos para diferentes linguagens de programação ou frameworks, como “modo lisp” ou “modo Ruby on Rails” ou “modo PHP”. Esses modos podem modificar diretamente até mesmo os comportamentos básicos do Emacs, formatar ou colorir automaticamente o texto e adicionar texto padrão ou “boilerplate”, como declarações de funções e closures.
Os programadores acham que o Emacs é muito mais personalizável de acordo com suas necessidades específicas do que o Vim. No entanto, alguns programadores podem achar que o Vim é finalmente mais adequado para o seu ambiente de programação devido à sua operação igualmente personalizável e totalmente modal.
O Emacs pode ser estendido em elisp, enquanto o Vim tem sua própria linguagem de script interna e suporta o uso de outras linguagens de programação para desenvolvimento de plugins.
Enquanto o Emacs pode ser estendido em elisp, o Vim tem seu próprio idioma de script interno e suporta o uso de outras linguagens de programação para o desenvolvimento de plugins. Também pode ser estendido em tempo real usando o modo de comando. O modo de comando permite que as opções de configuração sejam definidas, funções sejam definidas e macros sejam criadas. Os arquivos de configuração para o Vim são apenas comandos que podem ser inseridos através do modo de comando.
- Interface Gráfica do Usuário (IGU)
Ambos o Vim e o Emacs possuem 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 configuração rápida. As GUIs para os editores não oferecem praticamente nenhuma função adicional além das disponíveis nas versões CLI (interface de linha de comando).
O Emacs usa XDisplay ou gtk2 para sua interface gráfica. O Vim pode usar muitas outras bibliotecas de interface gráfica, como gtk, gnome, gnome2, motif, athena e neXtaw, além do gtk2.
Resumo
- Vi é mais leve e mais rápido do que o Emacs.
- Emacs é mais personalizável do que Vi.
- Emacs pode emular Vi, mas não o contrário.
- Emacs desenvolveu posteriormente uma interface gráfica enquanto Vi não.
- Emacs continuou se desenvolvendo enquanto Vi foi sucedido por seus variantes.
Ainda temos uma guerra ou um vencedor claro?
Em 2020, Jake King, o CEO da CMD, decidiu resolver um debate de longa data com seu CTO Mike Sample, sobre qual dos dois editores é mais popular no espaço de tecnologia do Twitter.
Você deveria querer fazer alguns amigos de vim agora.