ti-enxame.com

Quais são os prós e os contras do Vim e do Emacs?

Como você compararia esses editores? Quais são os prós e os contras de cada um?

[nota] Isso não deve ser respondido por aqueles que "odeiam um e amam outro" ou por aqueles que não usaram os dois.

388
John Berryman

Eu uso os dois, embora se eu tivesse que escolher um, eu sei qual escolheria. Ainda assim, tentarei fazer uma comparação objetiva em algumas questões.

  • Disponível em qualquer lugar? Se você é um administrador de sistemas profissional que trabalha com sistemas Unix ou um usuário avançado em dispositivos incorporados (roteadores, smartphones com Busybox,… ), você precisa conhecer o vi (não o Vim), porque está disponível em todos os sistemas Unix e na maioria dos sistemas semelhantes ao Unix, seja desktop, servidor ou incorporado. Para um usuário comum, esse argumento é irrelevante: o Emacs está facilmente disponível para todos os sistemas operacionais de desktop/servidor e, como suporta edição remota, basta colocá-lo na máquina de qualquer maneira.

  • Inchado? O Emacs já foi humorístico por “Oito Megabytes e troca constante”. No momento, na minha máquina, o Google Chrome precisa de tanto RAM por guia quanto o Emacs para 100 arquivos abertos, e eu nem vou mencionar o Firefox. No século 21, o Emacs inchaço é apenas um mito.

    Característica inchaço também não é um problema. Se você não o usa, não precisa saber que está lá. Os recursos do Emacs ficam fora do caminho quando você não os utiliza e a documentação é muito bem organizada.

  • Tempo de inicialização : Vi (m) proponentes reclamam do tempo de inicialização do Emacs. Sim, o Emacs é lento para iniciar, mas isso não é grande coisa: você inicia o Emacs uma vez por sessão e conecta-se ao processo em execução com emacsclient. Portanto, a inicialização lenta do Emacs é principalmente um mito.

    Há uma exceção: quando você faz login em uma máquina remota e deseja editar um arquivo lá. Iniciar um Emacs remoto é (geralmente) mais lento que iniciar um Vim remoto. Em algumas situações, você pode manter um Emacs rodando dentro do Screen. Você também pode editar arquivos remotos no Emacs, mas isso interrompe o fluxo se você estiver em uma sessão ssh em um terminal. (Desde o XEmacs 21 ou o GNU Emacs 23, você pode abrir uma janela do Emacs a partir de uma instância do X em execução dentro de um terminal.)

    Virando a mesa, observei o Vim demorando muito mais para carregar do que o Emacs (vim -u /dev/null Vs. emacs -q). É certo que isso estava em uma plataforma estranha (Cygwin).

  • Curva de aprendizado inicial: Isso varia de pessoa para pessoa. gráfico de Michael Mrozek me fez rir. Sério, eu concordo que a curva de aprendizado do Vim começa mais íngreme do que qualquer outro editor, embora isso possa ser diminuído usando o gvim.

    Desde que eu dissipei alguns mitos do Emacs, deixe-me dissipar um mito do vi: um editor modal não é difícil ou doloroso de usar. É preciso um pouco de hábito, mas depois de um tempo parece muito natural. Se eu fosse redesenhar o vi (m), definitivamente manteria os modos.

  • Curva de aprendizado assintótico: O Vim e o Emacs têm muitos recursos, e você continuará descobrindo novos após anos de uso.

  • Produtividade : Esse é um tópico extremamente difícil. Os defensores do vi (m) argumentam que você pode fazer praticamente tudo sem sair da linha de base, e isso o torna mais eficiente quando você mais precisa. Os proponentes do Emacs replicam que o Emacs tem muitos comandos que não são usados ​​com freqüência, portanto, não garante uma ligação de chave, mas é conveniente quando você precisar deles ( referência obrigatória do xkcd ).
    Minha opinião pessoal é que o Emacs vence, a menos que você tenha uma deficiência de digitação (e mesmo assim você pode configurar o Emacs para exigir apenas sequências de teclas e não combinações como Ctrl+ letra). As chaves da linha de casa são legais, mas geralmente não são uma vitória tão grande porque você precisa mudar de modo. Acho que não há nada que o Vim possa fazer significativamente com mais eficiência do que o Emacs, enquanto o inverso é verdadeiro.

  • Personalização : Ambos os editores são programáveis ​​e há um extenso corpo de pacotes disponíveis para ambos. No entanto, o Vim é um editor com uma linguagem de macro; O Emacs é um editor escrito em LISP com algumas primitivas ad-hoc. O Emacs vence espetacularmente quando você tenta fazer algo que os autores simplesmente não pensaram. Isso não acontece todos os dias, mas se acumula ao longo dos anos.

  • Mais do que um editor : O Vim é um editor. O Emacs não é apenas um editor: é também um IDE, um gerenciador de arquivos, um emulador de terminal, um navegador da Web, um cliente de email, um cliente de notícias, ... Se isso é bom ou ruim, é motivo de debate. Mas você pode usar o Emacs como um mero editor (consulte "inchar o recurso" acima).

  • Como IDE : O Vim e o Emacs têm suporte para muitas linguagens de programação e outros formatos de texto. Além do básico, como coloração sintática e recuo automático, ambos possuem recursos avançados IDE, como pesquisas de referência cruzada de código e documentação, inserções e refatorações assistidas, controle de versão integrado e a capacidade de iniciar uma compilação e pular para o primeiro erro.

    Um domínio em que o Emacs é melhor que o Vim é a interação com os subprocessos assíncrono. É quando você inicia uma compilação longa e deseja fazer outra coisa dentro da mesma instância do editor enquanto o compilador está agitando. Ou quando você deseja interagir com um loop de leitura e avaliação - O Emacs realmente brilha com isso, o Vim só tem hacks desajeitados para oferecer. No entanto, um novo fork do vim, Neovim provou ter corrigido isso e implementado várias outras correções de bugs não implementadas no stock vim.

429

Vou postar o que acho que são os principais benefícios de cada um:


O Emacs possui consideravelmente mais extensões para permitir que você execute tarefas que são apenas vagamente relacionadas ao editor de texto, como navegar no sistema de arquivos ou mexer com o controle de versão, e extensões que não são de forma alguma relacionadas ao editor de texto, como ler feeds RSS. Se você deseja um ambiente em vez de apenas um editor de texto, o Emacs será melhor que o Vim. Eu também acho que o Emacs é muito mais fácil de aprender, apesar do que alguns querem que você acredite:

Editor learning curve comic

Em particular, acho que um usuário iniciante do Emacs será mais rápido que um usuário iniciante do Vim


Por outro lado, o Vim é inegavelmente mais rápido. Parece que essa é uma parte central do argumento, mas, na minha opinião, não há contestação; Eu me considero um usuário fluente do Emacs e não sou páreo para as duas pessoas que conheço que têm o mesmo conhecimento do Vim. O problema é que o número de pessoas que têm domínio suficiente do Vim para ser tão rápido é incrivelmente pequeno (das ~ 30 pessoas com quem converso regularmente que usam o Vim, acho que apenas uma é excepcionalmente boa nisso). Existe uma grande lacuna entre o ganho de velocidade possível e o ganho de velocidade real que você obtém; Os usuários do Emacs serão quase tão rápidos quanto 99% dos usuários do Vim e (como eu disse na seção Emacs) os usuários iniciantes do Emacs provavelmente serão mais rápidos do que os usuários iniciantes do Vim

272
Michael Mrozek

Existe um vi disponível em todos os sistemas unix (ou quase), no entanto, você não pode dizer isso sobre nenhum outro editor. Esta é a razão número 1, imo, para aprender e se familiarizar com vi (observe 'vi' e não 'vim'). Nunca vi o Emacs disponível em uma instalação padrão.

Não estou dizendo que não use o Emacs ou esse é o único motivo para usar o Vim, mas quando você quiser usar sistemas Unix que não são seus ... vi faz parte do universal língua.

83
xenoterracide

Eu acho que os dois são incríveis. Acho que qualquer um pode fazer praticamente qualquer coisa que você possa imaginar, e ambos são tão personalizáveis ​​que, quando você termina de personalizá-los, ambos são exatamente o que você quer que sejam, nada mais nem menos.

O Emacs me destaca por estar um pouco mais próximo (embora ainda não atenda) dos padrões ISO/IEC de usabilidade e consistência para interfaces de usuário e, portanto, não joga tantos truques com seus "instintos" sobre o que o vim faz. A vida útil dos instintos que você desenvolveu trabalhando com outros programas não funcionará contra você.

O Vim é um modelo completamente diferente e, em muitos aspectos, é superior por si só, na medida em que se baseia muito menos nas seqüências Cntrl/Alt e, em vez disso, apenas em seus modos, permitindo que você mantenha seus esforços na linha de casa e digitando Mais rápido. Mas o vim é praticamente único e, a menos que você instale algum software de acompanhamento muito incomum (por exemplo, Vimperator, Jumanji/Zathura etc.), os instintos que você desenvolve trabalhando com o vim não serão transferidos para outros programas e vice-versa. Dito isto, eu mesmo decidi vim. Você precisa escolher um mais cedo ou mais tarde, para melhor ou para pior, pois é difícil dominar as duas coisas.

24
frabjous

Eu uso os dois regularmente. Eu vejo o Emacs como um editor "live in", enquanto eu uso o Vim para tarefas rápidas e únicas. Superficialmente, o Emacs é muito mais inchado do que o Vim e, portanto, não é tão conveniente "inicializar" quanto o Vim, mas também acho que as filosofias da interface do usuário de um para outro apóiam esse paradigma. O Emacs é muito mais construído para mantê-lo por dentro, tornando as coisas agradáveis ​​e confortáveis ​​para que você não precise sair, enquanto o vim é muito mais "Unixy" e se vê como parte de um cinto de ferramentas maior.

Muitas pessoas fogem do Emacs devido à sua forte dependência de bits de bucky , mas essa é uma razão bastante tola para mim. O poder real que o Emacs tem sobre o Vim é a personalização e, com o poder do Viper etc., isso realmente não é um problema. Certamente, o Vim-Script fornece seu próprio nível de personalização e, por exemplo, sua linguagem de programação favorita não possui um marcador de sintaxe apropriado, você certamente pode preparar uma, mas o Emacs é, em última análise, uma máquina LISP auto-hospedada e, em particular, no final, você pode fazer muito, muito mais, brincar com isso. Simplesmente não existem ferramentas como gnus ou org-mode no Vim, para citar algumas. Em poucas palavras, o Emacs não é apenas um editor, é praticamente um maldito sistema operacional.

Para manipular o texto, eu diria que eles são exatamente iguais.

21
Eli Frey

Vou colocar meu valor de US $ 0,02, pois passei alguns anos usando o emacs e o XEmacs e depois fui para o vim. Para ser justo, eu realmente usei o vi por volta de 1990-1992, por isso estava familiarizado com a interface do usuário.

Emacs

  • O Emacs foi descrito como um sistema LISP que acabou de ser usado para escrever um editor, e há muita verdade nisso. Você pode implementar praticamente qualquer coisa que desejar no elisp, se quiser dedicar algum tempo para entender o ambiente. Não posso dizer que já o conheci tão bem, mas fiz coisas de vez em quando. O Emacs e o Xemacs não são totalmente compatíveis nesse nível, portanto, scripts de terceiros podem ser executados em um, mas não no outro.

  • Observou-se que RMS e alguns outros hackers proeminentes do Emacs tiveram que se aposentar da programação devido a problemas com o OOS, onde Bill Joy, Bram Moolenaar e vários outros luminares ainda estão lá. duro em seus dedos mindinhos.

  • O Emacs é um sistema muito mais católico que o vi, e é visto como um exemplo canônico de envelope de software . Juntamente com o Netscape, esta é uma das jwz's contribuições para provar esta lei.

Uma coisa única que fiz com o xemacs uma vez foi executá-lo em uma máquina e abrir uma sessão x em um xterminal (na verdade, um antigo Sun 3/60 reaproveitado) em uma sala diferente contra o mesmo buffer na mesma instância em execução.

Prós: Extensível, mais poderoso que qualquer outro editor conhecido pelo homem, integração madura com praticamente todas as principais ferramentas de programação de software livre.

Contras: Ergonomia questionável, elisp não é fácil de aprender.

Vim

Disclamer - Eu deixei de usar o emacs para o vim há cerca de 10 anos e costumo usar o vim em sistemas baseados em Windows e Unix/Linux.

  • O Vi e seus descendentes têm um excelente recurso de macro de teclado para automatizar tarefas de edição. O recurso de script no vim não é tão sofisticado quanto o elisp, mas você pode construí-lo com suporte para Python, Tcl, Perl e talvez outros sistemas. Ocasionalmente, escrevi apenas scripts (fora dos arquivos .vimrc) para o vim.

  • O Vim tem uma pegada menor que o emacs, mas isso não é grande coisa hoje em dia.

  • A documentação e a ajuda on-line do Vim são bastante boas. O Emacs tem uma documentação on-line bastante boa, mas não acho que seja tão abrangente quanto a do vim.

  • O Vim herda a peculiar interface de usuário modal do vi, mas agora tem a capacidade de se comportar como um editor sem modo, pois você pode navegar no modo de inserção. No Windows, ele pode se comportar de maneira semelhante a um aplicativo do Windows.

Prós: Bom recurso de macro do teclado, boa extensão e extensibilidade de scripts, mas não tão bom quanto o emacs. Os editores derivados do Vim ou do vi são padrão na maioria, senão em todas as distribuições linux de propósito geral ou unix. Indiscutivelmente melhor ergonomia.

Contras: A interface de usuário modal parece estranha para as pessoas acostumadas às UIs do Windows. Hoje há menos problemas com o vim.

19
ConcernedOfTunbridgeWells

Eu normalmente uso o Vim, mas ambos são ótimos editores.

Aprender a usar o vi foi desagradável, mas eu superei e aprendi a gostar. Meus momentos mais frustrantes foram quando a tecla Caps Lock estava ativada. Você pode tentar com o gVim, mas uma das maiores vantagens do vi e do Emacs é a capacidade de fazer coisas legais enquanto mantém as mãos no teclado, e é provável que o gVim o mantenha usando o mouse. (Aprender a jogar jogos parecidos com um roguel ao mesmo tempo me deu prática com as teclas de movimento do cursor, mas me fez tentar mover na diagonal nos documentos às vezes.)

O Emacs é provavelmente mais acessível. Não tem modelagem e você não vai se ferrar pressionando a tecla Caps Lock. A idéia de controlar o editor digitando letras com a tecla de controle pressionada não deve ser muito estranha para os usuários avançados modernos, embora as chaves reais para fazer as coisas pareçam selvagens e arbitrárias para o usuário típico do Windows/Mac OS X. Novamente, as versões que permitem o uso do mouse oferecem poucos benefícios a longo prazo.

Ambos exigem algum nível de conhecimento para serem usados ​​com eficácia. Ao contrário, digamos, do bloco de notas, você não pode simplesmente sentar e editar.

Ambos são configuráveis, embora, para meu dinheiro, escrever extensões no mesmo LISP, o editor esteja escrito seja uma experiência mais suave. (O Emacs, como normalmente distribuído, não é realmente um editor. É um ambiente LISP personalizado para processamento de texto, com muito software pré-escrito, incluindo um editor. Daí a piada "O Emacs faz um Shell decente, mas poderia usar um editor melhor. ")

Eu normalmente uso o Vim porque, após um treinamento extensivo, parece mais fácil. Isso pode ser devido a vantagens no sistema de modos, onde um número imenso de comandos está disponível usando um dedo próximo às linhas domésticas, ou "síndrome do pato bebê", que se aplica muito aos editores: depois que você aprende um bom, geralmente fica com o dedo para isso.

Você não vai dar errado usando qualquer um.

15
David Thornley

Por acaso, acho que o comentário "vim é modal" acima está incorreto. O Vim tem comandos. Você pode fazer "11aAgora é a hora de todos os homens de bem .." e acabar com 11 novas linhas de texto idênticas em seu arquivo. Isso é um comando, não um modo. Mas há realmente uma diferença muito básica nos comandos do Vim e nos comandos do Emacs. Não tenho certeza absoluta de que posso descrevê-lo, mas Eric Fischer incorporou a edição de linhas no estilo Emacs em um driver TTY há mais de 10 anos e publicou um artigo sobre isso:

http://www.usenix.org/event/usenix99/full_papers/fischer/fischer.pdf

Ele descobriu que a edição das linhas de estilo do Emacs era fundamentalmente diferente do estilo vi.

Portanto, o Emacs tem a vantagem de que muitas outras coisas (bash, gnuplot, zsh, ksh, outras que não consigo pensar em detalhes) acabam implementando a edição de linhas no estilo do Emacs.

Devo observar que eu pessoalmente uso o Vim o tempo todo. Sou apenas um usuário ocasional do Emacs.

9
Bruce Ediger

Como não foi explicitamente declarado, acrescentarei que não há melhor ambiente de programação (LISP em uma caixa, SLIME etc.) do que uma distribuição Emacs levemente modificada. Todas as minhas necessidades de programação (99%) são atendidas no Vim, mas, para todas as bibliotecas e rotinas LISP que escrevo, tenho que ativar o Emacs para realizar qualquer tarefa produtiva.

9
Shamster

A principal razão pela qual não uso o vi/vim é que é modal. A principal razão pela qual eu uso o vi é que ele está disponível em quase todos os lugares.

9

Eu uso o Vim/gVim.

Eu costumava usar o Emacs, mas achei que o gVim geralmente trabalha mais rápido em máquinas mais lentas, além disso, devido ao seu requisito POSIX, o vi está disponível em quase todos os lugares.

Ao usar o Vim ou o gVim, eu uso muito o mouse, acho que o suporte é ótimo.

Comecei a usar o Emacs, porque era mais fácil de usar para um usuário iniciante. Eu achei o uso do nano bastante suscetível a erros por algum motivo e, em algum momento, percebi que estava muito mais confortável com o uso do vi.

Agora, é uma mistura. Eu uso o Eclipse e o gedit com bastante frequência também. O Vim, no entanto, ainda é meu editor favorito e mais usado.

8
polemon

Uso o gVim e o Emacs bem o suficiente para ser produtivo, embora não seja especialista em nenhum deles. Uma coisa que posso dizer com certeza é que o Vim e o gVim rodam mais rápido no meu laptop Windows 7 (que eu tenho que usar no trabalho). O Emacs, na caixa do Windows, tem o estranho hábito de "pausar" por até um minuto e deixar de responder, mesmo enquanto continua aceitando a entrada do teclado, antes de cuspir tudo o que se acumula no buffer do teclado em um Rush. Isso não acontece no Mac OS ou Linux. No entanto, eu me vejo usando o Vim ou o gVim na maioria das vezes em todas as plataformas, apenas para não precisar parar e pensar em qual editor estou usando e ajustando. Dito isto, em um ambiente puramente * nix, eu provavelmente ficaria no Emacs porque acho a edição sem modelagem um pouco mais natural.

Bottom line: na minha opinião, ambos os editores são poderosos o suficiente para lidar com toda e qualquer necessidade de edição de texto. A escolha deve ser baseada em considerações práticas (como detalhes de implementação de plataforma) e estilo de trabalho.

7
Wing Flanagan

A principal diferença entre Emacs e Vim é ergonômica. Há síndrome do túnel do carpo, CTS, como você sabe. O Emacs é muito "perigo" se você tem CTS e provoca CTS. Vim - não, você pode ler sobre essa diferença em muitos lugares. Por exemplo, no Vim, você pode editar o texto apenas com um dedo. No Emacs - você não pode :)

3
Paul