Guerra do editor
A guerra do editor é a rivalidade entre os usuários dos editores de texto Emacs e vi (agora geralmente Vim, ou mais recentemente Neovim). A rivalidade tornou-se uma parte duradoura da cultura hacker e da comunidade de software livre.
O debate Emacs versus vi foi uma das "guerras santas" conduzido em grupos Usenet, com muitas guerras inflamadas travadas entre aqueles que insistem que seu editor de escolha é o modelo de perfeição de edição e insultam o outro, desde pelo menos 1985. Batalhas relacionadas foram travadas sobre sistemas operacionais, linguagens de programação, sistemas de controle de versão, e até mesmo o estilo de indentação do código-fonte.
Comparação
As diferenças históricas mais importantes entre o vi e o Emacs são apresentadas na tabela a seguir:
Característica | Emacs | viv |
---|---|---|
Execução Keystroke | Tradicionalmente, comandos Emacs são combinações de teclas para as quais chaves modificadoras são mantidas para baixo enquanto outras chaves são pressionadas; um comando é executado uma vez completamente digitado. Isso ainda forma uma árvore de decisão de comandos, mas não uma das teclas individuais. | vi retém cada permutação de chaves digitadas (por exemplo, questões de ordem). Isso cria um caminho na árvore de decisão que inequivocamente identifica qualquer comando. |
Uso de memória e personalização | Emacs executa muitas ações na inicialização, muitas das quais podem executar o código de usuário arbitrário. Isso faz Emacs demorar mais para começar (mesmo em comparação com o vim) e exigir mais memória. No entanto, é altamente personalizável e inclui um grande número de recursos, pois é essencialmente um ambiente de execução para um programa Lisp projetado para edição de texto. Emacs 18 (lançado em 1987) introduziu um modo de servidor projetado para executar continuamente em segundo plano. Várias instâncias do Emacs podem então ser iniciadas no modo cliente, anexando a este servidor e compartilhando estado. Emacs tempo de inicialização do cliente é praticamente instantâneo, pois tudo o que faz é invocar o processo Emacs existente para redesenhar a tela. | vi é um programa menor e mais rápido, mas com menos capacidade para personalização. O vim evoluiu de vi para fornecer significativamente mais funcionalidade e personalização do que vi, tornando-o comparável ao Emacs. tempo de inicialização vi é quase instantâneo para pequenos arquivos de texto, enquanto o vim é quase tão rápido. |
Ambiente de utilizador | Emacs, enquanto também inicialmente projetado para uso em um console, teve suporte X11 GUI adicionado em Emacs 18, e fez o padrão na versão 19. As atuais GUIs Emacs incluem suporte completo para espaçamento proporcionado e variação de tamanho de fonte. Emacs também suporta imagens incorporadas e hipertexto. | vi, como emacs, foi originalmente usado exclusivamente dentro de um console de modo de texto, não oferecendo nenhuma interface gráfica do usuário (GUI). Muitos derivados vi modernos, por exemplo, MacVim e gVim, incluem GUIs. No entanto, o suporte para fontes proporcionalmente espaçadas permanece ausente. Também falta é suporte para diferentes fontes de tamanho no mesmo documento. |
Função / interface de navegação | Emacs usa acordes metakey. Chaves ou acordes de teclas podem ser definidos como chaves de prefixo, que colocam Emacs em um modo onde espera por prensas de chave adicionais que constituem uma chave de ligação. Os encadernadores principais podem ser específicos do modo, personalizando ainda mais o estilo de interação. Emacs fornece uma linha de comando acessada por M-x que pode ser configurada para autocompletar de várias maneiras. Emacs também fornece um defalias macro, permitindo nomes alternativos para comandos.
| vi usa modos de edição distintos. Em "modo inerte", as chaves inserem caracteres no documento. Em "modo normal" (também conhecido como "modo combinado", para não ser confundido com "modo de linha de comando", que permite ao usuário inserir comandos), teclas nuas executam comandos vi. |
Teclado | A expansão de um dos backronyms de Emacs é Fuga, Meta, Alt, Controle, Shift, que resume perfeitamente a maioria das chaves modificadoras que usa, apenas deixando para fora Super. Emacs foi desenvolvido em teclados de espaço-cadet que tinham mais modificadores chave do que layouts modernos. Existem vários pacotes emacs, como espaçamacs ou ergoemacs que substituem essas combinações de chaves com as mais fáceis de digitar, ou a personalização pode ser feita ad hoc pelo usuário. | vi não usa Alt chave e raramente usa o Ctrl Chave. O chaveiro do vi é principalmente restrito às chaves alfanuméricas e à chave de escape. Esta é uma relíquia duradoura de sua herança teletipo, mas tem o efeito de fazer a maioria da funcionalidade de vi acessível sem o dedo estranho frequente atinge. |
Suporte de linguagem e script | Emacs tem suporte completo para todos os sistemas de escrita compatíveis com Unicode e permite que vários scripts sejam livremente misturados. | vi tem apoio rudimentar para idiomas diferentes do inglês. Moderno O Vim suporta Unicode se usado com um terminal que suporta Unicode. |
Benefícios do Emacs
- Emacs tem uma interface não-modal
- A natureza não-modal das keybindings Emacs torna-o prático para ser suportado como chave-bindings em todo o sistema operacional.
- Um dos programas de computador mais portados. Ele é executado em modo de texto e sob interfaces gráficas de usuário em uma ampla variedade de sistemas operacionais, incluindo a maioria dos sistemas Unix-like (Linux, os vários BSDs, Solaris, AIX, IRIX, macOS etc), MS-DOS, Microsoft Windows, AmigaOS e OpenVMS. Os sistemas Unix, livres e proprietários, fornecem frequentemente a Emacs junto com o sistema operacional.
- A arquitetura do servidor Emacs permite que vários clientes se conectem à mesma instância Emacs e compartilhem a lista de buffers, o anel de matar, o histórico de desfazer e outro estado.
- Sistema de ajuda on-line pervasivo com keybindings, funções e comandos documentados na mosca.
- Variante de linguagem de programação Lisp extensível e personalizável (Emacs Lisp), com características que incluem:
- Capacidade de emular vi e vim (usando Evil, Viper ou Vimpulse).
- Um poderoso e extensível gerenciador de arquivos (dired), depurador integrado, e um grande conjunto de desenvolvimento e outras ferramentas.
- Ter cada comando ser uma função Emacs Lisp permite que os comandos DWIM (Do What I Mean) respondam programaticamente a ações passadas e estado de documento. Por exemplo, um
switch-or-split-window
O comando pode mudar para outra janela se existir, ou criar uma, se necessário. Isso reduz o número de teclas e comandos que um usuário deve lembrar. - «An OS inside an OS» (em inglês). Emacs Lisp permite que Emacs seja programado muito além de recursos de edição. Mesmo uma instalação base contém várias dezenas de aplicações, incluindo dois navegadores, leitores de notícias, vários agentes de correio, quatro clientes IRC, uma versão do ELIZA, e uma variedade de jogos. Todas essas aplicações estão disponíveis em qualquer lugar que a Emacs execute, com a mesma interface de usuário e funcionalidade. A partir da versão 24, a Emacs inclui um gerenciador de pacotes, facilitando a instalação de aplicativos adicionais, incluindo navegadores alternativos, EMMS (Emacs Multimedia System), e muito mais. Também estão disponíveis vários pacotes para programação, incluindo alguns direcionados a combinações específicas de linguagem / biblioteca ou estilos de codificação.
Benefícios do vi
- Vi tem uma interface modal
- Editar comandos são composable
- Vi carrega mais rápido do que Emacs.
- Sendo profundamente associado com a tradição UNIX, ele é executado em todos os sistemas que podem implementar a biblioteca C padrão, incluindo sistemas UNIX, Linux, AmigaOS, DOS, Windows, Mac, BeOS, OpenVMS, IRIX, AIX, HP-UX, BSD e POSIX compatíveis.
- O Vim e o neovim são extensíveis e personalizáveis através do script ou APIs do Vim para linguagens interpretadas como Python, Ruby, Perl e Lua.
- Ubiquidade. Essencialmente, todos os sistemas Unix e Unix vêm com vi (ou uma variante) incorporado. Vi (e ex, mas não vim) é especificado no padrão POSIX.
- Ambientes de resgate do sistema, sistemas embarcados (nomeadamente aqueles com BusyBox) e outros ambientes restritos muitas vezes incluem vi, mas não emacs.
Evolução
Muitos pequenos editores baseados ou derivados do vi no passado tiveram sucesso. Isso porque era crucial preservar a memória que era, na época, relativamente escassa. À medida que os computadores se tornaram mais poderosos, muitos clones do vi, Vim em particular, cresceram em tamanho e complexidade de código. Essas variantes vi de hoje, assim como as antigas variantes leves do Emacs, tendem a ter muitos dos benefícios e desvantagens percebidos do lado oposto. Por exemplo, o Vim sem extensões requer cerca de dez vezes o espaço em disco exigido pelo vi, e as versões recentes do Vim podem ter mais extensões e rodar mais devagar que o Emacs. Em The Art of Unix Programming, Eric S. Raymond chamou o suposto peso leve do Vim quando comparado com o Emacs de "um mito compartilhado". Além disso, com as grandes quantidades de RAM nos computadores modernos, tanto o Emacs quanto o vi são leves em comparação com grandes ambientes de desenvolvimento integrado, como o Eclipse, que tendem a atrair o escárnio dos usuários do Emacs e do vi.
Tim O'Reilly disse, em 1999, que o tutorial da O'Reilly Media sobre vi vende duas vezes mais cópias do que no Emacs (mas observou que o Emacs veio com um manual gratuito). Muitos programadores usam Emacs e vi ou suas várias ramificações, incluindo Linus Torvalds que usa MicroEMACS. Também em 1999, o criador do vi, Bill Joy, disse que o vi foi "escrito para um mundo que não existe mais" e afirmou que o Emacs foi escrito em máquinas muito mais capazes com exibições mais rápidas para que eles pudessem ter "comandos engraçados com a tela brilhando e tudo mais, e enquanto isso, estou sentado em casa em uma espécie de excedente da Segunda Guerra Mundial habitação em Berkeley com um modem e um terminal que mal consegue tirar o cursor da linha de fundo".
Além dos semelhantes ao Emacs e vi, o pico e seu clone gratuito e de código aberto nano e outros editores de texto, como o ne, geralmente têm seus próprios defensores terceirizados nas guerras dos editores, embora não na extensão do Emacs e do vi.
A partir de 2020, tanto o Emacs quanto o vi podem reivindicar estar entre os programas aplicativos de vida mais longa de todos os tempos, além de serem os dois editores de texto mais usados no Linux e no Unix. Muitos sistemas operacionais, especialmente derivados do Linux e BSD, agrupam vários editores de texto com o sistema operacional para atender à demanda do usuário. Por exemplo, uma instalação padrão do macOS contém ed, nano, TextEdit e Vim. Frequentemente, em algum ponto da discussão, alguém apontará que ed é o editor de texto padrão.
Humor
A Igreja do Emacs, formada pelo Emacs e pelo criador do Projeto GNU, Richard Stallman, é uma paródia religiosa. Embora se refira ao vi como o "editor da besta" (vi-vi-vi sendo 6-6-6 em algarismos romanos), não se opõe ao uso de vi; em vez disso, chama o software proprietário de anátema. ("Usar uma versão gratuita do vi não é um pecado, mas uma penitência.") A Igreja do Emacs tem seu próprio grupo de notícias, alt.religion.emacs, que tem postagens que pretendem apoiar esse sistema de crenças.
Stallman referiu-se a si mesmo como Santo IGNU-cius, um santo da Igreja de Emacs.
Apoiadores do vi criaram um Culto do vi oposto, argumentado pelos usuários mais linha-dura do Emacs como uma tentativa de "imitar seus superiores".
Em relação à natureza modal do vi (um ponto comum de frustração para novos usuários), alguns usuários do Emacs brincam que o vi tem dois modos - "bipar repetidamente" e "quebrar tudo". Os usuários do vi gostam de brincar que as sequências de teclas do Emacs induzem a síndrome do túnel do carpo ou mencionam uma das muitas expansões satíricas do acrônimo EMACS, como "Escape Meta Alt Control Shift" (um golpe na dependência do Emacs de teclas modificadoras) ou "Oito Megabytes e troca constante" (em uma época em que era uma grande quantidade de memória) ou "EMACS torna qualquer computador lento" (um acrônimo recursivo como os que Stallman usa) ou "Eventually Munches All Computer Storage", em referência aos altos requisitos de recursos do sistema do Emacs. O GNU EMACS foi expandido para "Geralmente não usado, exceto por cientistas de computação de meia-idade" referenciando seus fãs mais fervorosos e seu uso em declínio entre os programadores mais jovens em comparação com editores mais orientados graficamente, como Atom, BBEdit, Sublime Text, TextMate e Visual Studio Code.
Como uma cutucada no Emacs' Com recursos rastejantes, os defensores do vi são conhecidos por descrever o Emacs como "um ótimo sistema operacional, faltando apenas um editor decente". Sabe-se que os defensores do Emacs respondem que o editor é realmente muito bom, mas o sistema operacional poderia melhorar (referindo-se à famosa falta de simultaneidade do Emacs, que agora foi adicionada).
Um jogo entre usuários UNIX, seja para testar a profundidade da compreensão de um usuário do Emacs sobre o editor ou para zombar da complexidade do Emacs, envolvia prever o que aconteceria se um usuário mantivesse pressionada uma tecla modificadora (como Ctrl ou Alt) e digitou seu próprio nome. Esse humor do jogo surgiu com os usuários do antigo editor TECO, que era a base de implementação, via macros, do Emacs original.
Devido à forma como se sai do vi (":q", entre outros), os hackers brincam sobre um método proposto para criar uma sequência de caracteres pseudo-aleatórios, tendo um usuário não familiarizado com o vi sentado na frente de um editor aberto e pedindo-lhes para sair do programa.
O mecanismo de busca do Google também entrou na brincadeira fazendo pesquisas por vi resultando na pergunta "Você quis dizer: emacs" solicitado na parte superior da página e pesquisa emacs resultando em "Você quis dizer: vi".
Contenido relacionado
Eric S. Raymond
Árabe
Jan Berglin