Guerra do editor - Editor war

A guerra do editor é a rivalidade entre os usuários dos editores de texto Emacs e vi (agora normalmente Vim , ou mais recentemente Neovim ) . A rivalidade se tornou uma parte duradoura da cultura hacker e da comunidade de software livre .

O debate Emacs versus vi foi uma das "guerras sagradas" originais conduzidas em grupos da Usenet , com muitas guerras travadas entre aqueles que insistem que o editor de sua escolha é o modelo de perfeição da edição e insultam o outro, desde pelo menos 1985. Relacionado batalhas têm sido travadas por sistemas operacionais , linguagens de programação , sistemas de controle de versão e até mesmo estilo de recuo 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:

Recursos do Emacs e vi
Recurso Emacs vi
Execução de pressionamento de tecla Tradicionalmente, os comandos do Emacs são combinações de teclas para as quais as teclas modificadoras são mantidas pressionadas enquanto outras teclas são pressionadas; um comando é executado depois de completamente digitado. Isso ainda forma uma árvore de decisão de comandos, mas não uma de pressionamentos de tecla individuais. vi retém cada permutação de chaves digitadas. Isso cria um caminho na árvore de decisão que identifica inequivocamente qualquer comando.
Uso de memória e personalização O Emacs executa muitas ações na inicialização, muitas das quais podem executar código de usuário arbitrário. Isso faz com que o Emacs demore mais para iniciar (mesmo em comparação com o vim) e exija 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 rodar continuamente em segundo plano. Várias instâncias do Emacs podem então ser iniciadas no modo cliente, anexando a este servidor e compartilhando o estado. O tempo de inicialização do cliente Emacs é praticamente instantâneo, pois tudo o que faz é provocar o processo Emacs existente para redesenhar a tela. vi é um programa menor e mais rápido, mas com menos capacidade de personalização. O vim evoluiu do vi para fornecer significativamente mais funcionalidade e personalização do que o vi, tornando-o comparável ao Emacs. O tempo de inicialização do vi é quase instantâneo para pequenos arquivos de texto, enquanto o vim é quase tão rápido.
Ambiente do usuário Emacs, embora também inicialmente projetado para uso em um console, tinha suporte a X11 GUI adicionado no Emacs 18, e se tornou o padrão na versão 19. As GUIs Emacs atuais incluem suporte completo para espaçamento proporcional e variação de tamanho de fonte. Emacs também oferece suporte a imagens embutidas e hipertexto . O vi, como o emacs, foi originalmente usado exclusivamente dentro de um console em modo texto, sem oferecer interface gráfica de usuário (GUI). Muitos derivados modernos do vi, por exemplo, MacVim e gVim, incluem GUIs. No entanto, o suporte para fontes com espaçamento proporcional permanece ausente. Também falta suporte para fontes de tamanhos diferentes no mesmo documento.
Interface de função / navegação Emacs usa acordes metakey . As teclas ou acordes de tecla podem ser definidos como teclas de prefixo , que colocam o Emacs em um modo em que ele aguarda pressionamentos de tecla adicionais que constituem uma ligação de tecla . As combinações de teclas podem ser específicas do modo, personalizando ainda mais o estilo de interação. O Emacs fornece uma linha de comando acessada pelo Mx que pode ser configurada para preenchimento automático de várias maneiras. O Emacs também fornece uma defaliasmacro, permitindo nomes alternativos para comandos. O vi usa modos de edição distintos . No "modo de inserção", as teclas inserem caracteres no documento. No "modo normal" (também conhecido como "modo de comando", não deve ser confundido com o "modo de linha de comando", que permite ao usuário inserir comandos), os pressionamentos de tecla simples executam os comandos do vi.
Teclado A expansão de um dos Emacs' backronyms é Escape, Meta, Alt, Controle, Mudança , que resume bem a maioria das teclas modificadoras que utiliza, deixando apenas a Super . O Emacs foi desenvolvido em teclados cadetes espaciais que tinham mais modificadores de tecla do que layouts modernos. Existem vários pacotes emacs, como spacemacs ou ergoemacs que substituem essas combinações de teclas por outras mais fáceis de digitar, ou a personalização pode ser feita ad hoc pelo usuário. O vi não usa a Altchave e raramente usa a Ctrlchave. O conjunto de teclas do vi é principalmente restrito às teclas alfanuméricas e à tecla de escape . Esta é uma relíquia duradoura de sua herança de teletipo , mas tem o efeito de tornar a maior parte da funcionalidade do vi acessível sem o contato desajeitado frequente com o dedo.
Suporte de linguagem e script Emacs tem suporte total para todos os sistemas de escrita compatíveis com Unicode e permite que vários scripts sejam livremente misturados. vi tem suporte rudimentar para outros idiomas além do inglês. Modern 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 dos atalhos de teclado do Emacs torna prático o suporte como atalhos de teclado em todo o sistema operacional.
  • Um dos programas de computador mais portados . Ele roda em modo texto e em interfaces gráficas de usuário em uma ampla variedade de sistemas operacionais , incluindo a maioria dos sistemas semelhantes ao Unix ( Linux , os vários BSDs , Solaris , AIX , IRIX , macOS etc.), MS-DOS , Microsoft Windows , AmigaOS e OpenVMS . Os sistemas Unix, tanto gratuitos quanto proprietários, freqüentemente fornecem o 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 buffer, kill ring , desfazer histórico e outros estados.
  • Sistema de ajuda on-line difundido com atalhos de teclado, funções e comandos documentados em tempo real.
  • Variante de linguagem de programação Lisp extensível e personalizável ( Emacs Lisp ), com recursos que incluem:
    • Capacidade de emular vi e vim (usando Evil, Viper ou Vimpulse).
    • Um gerenciador de arquivos poderoso e extensível ( dired ), depurador integrado e um grande conjunto de ferramentas de desenvolvimento e outras.
    • Ter todos os comandos como uma função Emacs Lisp habilita os comandos para DWIM (Do What I Mean) ao responder programaticamente às ações anteriores e ao estado do documento. Por exemplo, um switch-or-split-windowcomando pode alternar para outra janela, se houver, ou criar uma, se necessário. Isso reduz o número de pressionamentos de tecla e comandos que um usuário deve lembrar.
    • "Um sistema operacional dentro de um sistema operacional". O Emacs Lisp permite que o Emacs seja programado muito além dos recursos de edição. Mesmo uma instalação básica contém várias dezenas de aplicativos, incluindo dois navegadores da web , leitores de notícias, vários agentes de e-mail, quatro clientes de IRC , uma versão do ELIZA e uma variedade de jogos. Todos esses aplicativos estão disponíveis em qualquer lugar que o Emacs seja executado, com a mesma interface de usuário e funcionalidade. A partir da versão 24, o Emacs inclui um gerenciador de pacotes , facilitando a instalação de aplicativos adicionais, incluindo navegadores alternativos, EMMS ( Sistema Multimídia Emacs ) e muito mais. Também estão disponíveis vários pacotes para programação, incluindo alguns direcionados a combinações de linguagem / biblioteca ou estilos de codificação específicos.

Benefícios do vi

  • Os comandos de edição podem ser combinados
  • Vi tem uma interface modal
  • O Vi carrega mais rápido do que o Emacs.
  • Estando profundamente associado à tradição UNIX, ele roda em todos os sistemas que podem implementar a biblioteca C padrão , incluindo UNIX , Linux , AmigaOS , DOS , Windows , Mac , BeOS , OpenVMS , IRIX , AIX , HP-UX , BSD e compatível com POSIX sistemas.
  • Extensível e personalizável por meio de script Vim ou APIs para linguagens interpretadas como Python, Ruby, Perl e Lua
  • Onipresente. Essencialmente, todos os sistemas Unix e semelhantes ao Unix vêm com o vi (ou uma variante) embutido. Vi (e ex, mas não vim) é especificado no padrão POSIX .
  • Ambientes de resgate de sistema, sistemas embarcados (notadamente aqueles com BusyBox ) e outros ambientes restritos geralmente incluem vi, mas não emacs.

Evolução

A escolha do editor foi levantada durante uma apresentação em uma convenção de tecnologia.

No passado, muitos pequenos editores inspirados ou derivados do vi floresceram. Isso se devia à importância de conservar a memória com a quantidade comparativamente minúscula disponível na época. À medida que os computadores se tornaram mais poderosos, muitos clones do vi, o Vim em particular, aumentaram em tamanho e complexidade de código. Essas variantes do vi de hoje, 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 nenhuma extensão 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 do que o Emacs. Em The Art of Unix Programming , Eric S. Raymond chamou a suposta leveza do Vim quando comparada com o Emacs de "um mito compartilhado". Além disso, com a grande quantidade de RAM em 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 o 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 telas mais rápidas para que pudessem ter "comandos engraçados com a tela brilhando e tudo isso, e enquanto isso, estou sentado em casa em uma espécie de habitação excedente da Segunda Guerra Mundial em Berkeley com um modem e um terminal que mal consegue tirar o cursor dos resultados financeiros ".

Além do Emacs e do vi workalikes, o pico e seu clone de código aberto nano e outros editores de texto como o ne costumam ter seus próprios defensores terceirizados nas guerras dos editores, embora não tanto quanto o Emacs e o vi.

Em 2020, tanto o Emacs quanto o vi podem reivindicar estar entre os programas de aplicação de vida mais longa de todos os tempos, além de serem os dois editores de texto mais comumente usados ​​no Linux e no Unix. Muitos sistemas operacionais, especialmente Linux e derivados do 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. Freqüentemente, em algum ponto da discussão, alguém apontará que ed é o editor de texto padrão .

Humor

Richard Stallman aparecendo como St I GNU −cius, um santo na Igreja de Emacs

A Igreja do Emacs , formada pelo Emacs e pelo criador do Projeto GNU , Richard Stallman , é uma religião paródia . Embora se refira a 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, ele chama de anátema do software proprietário . ("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 se referiu a si mesmo como St I GNU −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 melhores".

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 mencionando uma das muitas expansões satíricas da sigla EMACS, como "Escape Meta Alt Control Shift" (um golpe na confiança do Emacs nas teclas modificadoras) ou "Oito Megabytes E Constantemente Swapping "(em uma época em que era uma grande quantidade de memória) ou" EMACS Makes Any Computer Slow "(um acrônimo recursivo como o que Stallman usa) ou" Eventually Munches All Computer Storage ", em referência aos altos requisitos de recursos do sistema do Emacs . GNU EMACS foi expandido para "Geralmente não usado, exceto por cientistas da computação de meia-idade", referindo-se a seus fãs mais fervorosos e seu uso em declínio entre programadores mais jovens em comparação com editores mais orientados para gráficos, como Atom , BBEdit , Sublime Text , TextMate , e código do Visual Studio .

Como uma provocação ao caráter assustador do Emacs , os defensores do vi são conhecidos por descrever o Emacs como "um ótimo sistema operacional, faltando apenas um editor decente". Os defensores do Emacs são conhecidos por responder que o editor é realmente muito bom, mas o sistema operacional poderia usar melhorias (referindo-se à famosa falta de simultaneidade do Emacs , que agora foi adicionada).

Um jogo entre usuários UNIX, seja para testar a profundidade de compreensão do editor de um usuário Emacs ou para zombar da complexidade do Emacs, envolvia prever o que aconteceria se um usuário pressionasse uma tecla modificadora (como Ctrlou Alt) e digitasse seu próprio nome. Este humor de jogo originou-se com usuários do antigo editor TECO , que foi a base de implementação, via macros, do Emacs original.

Devido à forma como se sai do vi (": q", entre outros), os hackers fazem piada sobre um método proposto de criação de uma sequência de caracteres pseudo - aleatória , tendo um usuário não familiarizado com o vi sentado em frente a um editor aberto e pedindo-lhes para sair do programa.

O mecanismo de busca Google também se juntou à piada, fazendo buscas por vi resultando na pergunta "Você quis dizer: emacs" solicitada no topo da página, e buscas por emacs resultando em "Você quis dizer: vi".

Veja também

Notas

Referências

links externos