Pergunta

Bem na frente:Eu faço não quero começar uma guerra religiosa.

eu usei vi desde que me lembro, e nas poucas vezes que tentei captar Emacs Fiquei tão perdido que desisti rapidamente.Muitas pessoas acham o Emacs muito poderoso, entretanto.Sua programabilidade é um tanto lendária.Estou desenvolvendo principalmente Solaris + Java e gostaria de fazer uma pergunta simples:minha produtividade aumentará se eu investir tempo para entender o Emacs?A funcionalidade que ele oferece é superior Vim será reembolsado em aumentos de produtividade num prazo razoável?

Repita:Não quero uma resposta “meu editor é melhor que o seu”.Só quero uma resposta sim ou não sobre se vale a pena investir tempo ou não.Minha produtividade realmente aumentará?

Foi útil?

Solução

Prefiro o emacs ao vi, mas me sinto confortável em ambos.

Existem algumas coisas que você pode fazer no emacs que o tornam mais poderoso que o vi, mas nem todas estão relacionadas à programação.(Você pode enviar e-mail ou ler notícias no vi?Não, mas quem se importa?) Se você se sente confortável com lisp (eu não), você pode escrever complementos, modos e outras coisas para tornar sua vida mais fácil, mas é provável que isso seja coloração de sintaxe e chaves combinando e colírio para os olhos assim.

Vou parar de divagar agora.Será que o seu produtividade aumentar usando o emacs?Não.

Atualizar:Veja meu comentário abaixo.Desde que postei isso, eu ter descobri maneiras pelas quais o uso do emacs me tornou mais produtivo do que o vi.

Outras dicas

[Isenção de responsabilidade: pessoalmente, eu prefiro o Vim.Isenção de responsabilidade:Leia.]

O Vim se destaca no pequeno:ao separar conceitos de movimento e ação e fornecer recursos para repetições complexas, você pode realizar operações de edição incrivelmente poderosas em apenas uma curta sequência de pressionamentos de teclas.Você pode facilmente fazer coisas no Vim no curso normal da edição que exigiriam que você acessasse o script no Emacs.Além disso, a maior parte da energia que você usa vem pronta para uso, portanto, mesmo que você tenha um extenso .vimrc personalizações, é provável que você consiga trabalhar produtivamente com qualquer Instalação do Vim.

O Emacs se destaca em grande:mapeando todos os seus conceitos de UI diretamente para construções e conceitos básicos no Elisp, torna-se muito fácil introduzir globalmente recursos para tipos específicos de arquivos ou circunstâncias, tornando o Emacs algo como uma forma de Excel baseada em texto e muito mais estruturada e programável.Isso pressupõe que você gastará muito tempo personalizando seu ambiente de acordo com necessidades e preferências pessoais.É claro que o Emacs faz o possível para facilitar a permanência nesse ambiente para tudo e qualquer coisa que você queira fazer.

Em última análise, nenhum dos dois é superior.Eles oferecem estilos diferentes e, dependendo de suas tendências, um ou outro atenderá melhor às suas necessidades pessoais e maneira de pensar.É sempre útil conhecer ambos (além de mais editores), é claro.Mas você não será sensivelmente mais produtivo de uma forma ou de outra.

vi é uma faca de cozinha.

vim é uma faca de chef muito boa, afiada e equilibrada.

Emacs é um sabre de luz.

Na maioria das vezes, meu trabalho exige que eu corte vegetais.Ocasionalmente, tenho que enfrentar um exército inteiro de robôs.

Uso o Emacs há 20 anos.Estou digitando no Emacs agora com um widget chamado "É tudo texto" isso me permite inserir e retirar texto das caixas de texto no Firefox.Posso ir muito rápido no Emacs.Sou significativamente menos produtivo sem ele.

Isso é altamente discutível, mas também acho que aprender Emacs pode lhe ensinar muito sobre programação.

Dependendo de como você codifica, você poderia ver um aumento de produtividade.Para fins de conhecimento, também sou usuário de longa data do vim, mas aprendi o emacs há cerca de 2 anos e agora os uso de forma intercambiável.

O que me levou ao ponto de realmente aprender o emacs foi sua capacidade útil de abrir um grande número de arquivos ao mesmo tempo e alternar facilmente entre eles.Eu estava no meio da introdução de um recurso que adicionou e afetou um grande número de classes.(Isso era C++, então normalmente havia dois arquivos por classe.) Como eu ainda estava consolidando a interface, normalmente estava no meio da atualização de um arquivo quando percebia que precisava alterar outro.

Com o gvim, era mais fácil abrir uma nova janela para cada arquivo, o que estava começando a ficar complicado.Com o Emacs, porém, era simples abrir um novo arquivo na mesma janela (Ctrl-x, Ctrl-f).Depois que o Emacs tiver um arquivo aberto, é muito fácil alternar entre os buffers abertos (Ctrl-x, Ctrl-b).

Dando um passo adiante, uma única sessão do emacs pode abrir muitas janelas, portanto, além de dividir a janela verticalmente, eu poderia decidir, sem interromper o trabalho em um arquivo, abrir outro próximo a ele, permitindo-me trabalhar efetivamente lado a lado. lado, mantendo cada janela com a largura padrão de 80 caracteres.

Ainda há algumas coisas que considero mais fáceis no vim (por exemplomodo de seleção de bloco, gravação simples de macro, modo diff) e coisas que são mais fáceis no Emacs (alinhamento de linha, gerenciamento de arquivo/buffer, gerenciamento de janela/tela).Portanto, acabo alternando entre os dois (e às vezes usando os dois simultaneamente), dependendo da tarefa de edição que prevejo.

Se você ainda não tiver certeza, sugiro que experimente.Execute o tutorial do Emacs e use-o para escrever código para uma manhã ou um dia, contando muito com a ajuda.Se você ainda não gosta do que vê, fique com o vim.Independentemente do que o editor traga para a mesa, sua familiaridade e conhecimento da ferramenta serão de longe o fator mais importante para sua produtividade.

Não quero uma guerra santa, mas responda a uma pergunta altamente subjetiva com uma resposta sim/não.

Sim, você poderá notar um aumento de produtividade devido à poderosa funcionalidade.

Não, você não verá um aumento de produtividade porque os padrões e metáforas usados ​​no emacs podem não estar alinhados com seu cérebro.

A resposta curta à sua pergunta é "SIM".Mais detalhes abaixo.

Usei o vi quase exclusivamente entre 1980 e 1991.A única vez que não usei o vi foi quando estava lidando com uma instalação mínima do Unix que era pequena demais para incluir o vi, então tive que voltar para ed, que é o subconjunto mínimo de funcionalidade de edição que o vi original foi construído Em cima de.

A partir de 1985, outros programadores onde trabalhei estavam constantemente elogiando o emacs.Mas toda vez que eu tentava aprender, não ia muito longe.Eu passaria uma hora examinando o turorial do emacs (C-h t) e no final tudo que saberia seria como inserir e modificar texto e mover-se pela tela.Eu poderia fazer muito mais com o vi do que aprendi naquela hora com o emacs e não consegui fazer a troca.Três meses depois eu encontrava tempo para passar mais uma hora e acabava lendo o mesmo material.O Emacs tem uma curva de aprendizado com "L" maiúsculo.Só quando eu estava assinando um contrato em que todos usavam o emacs é que finalmente decidi que precisava dedicar mais de uma hora por vez para aprendê-lo.Depois de passar um pouco mais de um dia sem fazer nada além de trabalhar no tutorial e na documentação incluída, finalmente cheguei ao ponto em que poderia fazer coisas com o emacs que não conseguiria com o vi.A partir daí, nunca mais quis voltar.Ainda posso digitar comandos vi enquanto durmo, mas posso fazer muito mais com o emacs.

Entenda que estou comparando o emacs e o vi, não o vim.Nunca aprendi as extensões que o vim adicionou ao vi, e é provável que muitas delas sejam recursos copiados do emacs.Nesse caso, e se você já é proficiente com o vim, o emacs pode não oferecer tantas vantagens para você.

Entre as coisas das quais dependo o tempo todo no emacs estão:

  1. Quando você usa o emacs, tudo é tratado como texto.Isso significa que você pode manipular qualquer dado em qualquer buffer com praticamente os mesmos comandos.E nos casos em que um buffer está em um modo onde alguns dos comandos padrão não estão disponíveis, você pode copiar o texto para outro buffer em execução no modo fundamental e usar os comandos padrão lá.

  2. O Emacs fornece um ambiente de múltiplas "janelas" que pode ser exibido em um terminal de célula de caractere.Antes dos gráficos bitmap e das janelas reais, o emacs foi escrito para simular o comportamento de uma janela usando nada além de caracteres ASCII e posicionamento do cursor.Você provavelmente está pensando: “Isso é história antiga.Por que alguém deveria se preocupar com isso hoje?" Ainda uso essa capacidade todos os dias.Eu uso uma empresa de hospedagem que me permite acesso SSH.Assim, posso fazer login em um host Linux pela Internet e executar comandos shell.Embora isso seja muito poderoso, é muito mais poderoso ser capaz de dividir meu emulador de terminal em "janelas" usando o emacs, executar shells em várias dessas "janelas", editar arquivos em outras janelas e visualizar e editar diretórios em ainda outras "janelas". janelas".

    Na verdade, quando eu disse “janela” no parágrafo anterior, eu realmente quis dizer “buffer”.A emulação de células de caracteres do Emacs no Windows é uma forma de dividir o espaço da tela.Um buffer emacs está associado ao conteúdo (um arquivo, um shell bash, um diretório, texto arbitrário não associado a um arquivo, etc.) que pode ou não ser exibido no momento.Para ver o que está em um buffer, você escolhe uma janela e informa qual buffer deseja ver.Assim, você pode trabalhar em muito mais coisas do que o espaço disponível na tela para exibir.É aproximadamente análogo ao que você faz em uma GUI moderna de gráficos de bitmap quando você iconifica/desiconifica uma janela.

  3. Já aludi ao fato de que você pode executar um shell dentro de um buffer do emacs.Você pode ter quantos buffers executando shells desejar.Você pode copiar e colar texto entre um buffer de shell e um arquivo de texto ou comparar uma parte do texto entre um buffer de shell e um arquivo de texto usando exatamente as mesmas sequências de teclas que você usaria para copiar texto ou comparar texto entre dois diferentes. arquivos de texto.Na verdade, isso é verdade para a maioria dos tipos de buffers, não apenas para buffers de shell e buffers associados a arquivos.

  4. Quando você usa o comando do emacs para abrir um arquivo, mas o que você selecionou é na verdade um diretório, o buffer é executado no modo dired (editor de diretório).Neste modo, um único pressionamento de tecla abrirá o que quer que o cursor esteja apontando no momento, seja um arquivo ou subdiretório.Um buffer no modo dired é um gerenciador de arquivos - um terminal de célula de caractere orientado análogo ao Finder no Mac ou no Windows Explorer.

  5. Uma das funções do emacs que uso quase constantemente é "comparar janelas".Eu prefiro muito isso ao "diff" de linha de comando ou ferramentas de comparação de GUI, como o que está integrado no Eclipse.Diff ou Eclipse comparam arquivos inteiros e mostram quais linhas diferem.Mas o que acontece quando você tem duas linhas diferentes que parecem muito semelhantes?Considere o seguinte:

    Qual a diferença entre esta linha e a outra?

    Qual é a diferença entre esta linha e a outra?

    Quanto tempo você levaria para perceber a diferença?(Dica:O apóstrofo ASCII e Unicode são muito parecidos.)

    Ao contrário do diff e do Eclipse, que apenas mostram as linhas que diferem, a função "comparar janelas" do emacs é interativa.Você posiciona o cursor em cada uma das duas janelas lado a lado em um ponto onde o conteúdo da janela é o mesmo.Execute "compare-windows" e o cursor em cada janela se moverá para o primeiro caractere diferente.Reposicione o cursor em uma das janelas até o ponto em que seja igual à outra janela e execute novamente "comparar janelas" para encontrar a próxima diferença.Isso facilita a comparação de subporções de arquivos.

    Outra coisa para a qual uso regularmente "janelas de comparação" é comparar somas de verificação.Muitos projetos de software distribuem um tarball do aplicativo em uma página que também inclui um hash MD5 do tarball.Então, como você compara o hash MD5 na página de distribuição com o hash MD5 calculado a partir do arquivo baixado.O Emacs torna isso trivial.

    Primeiro copie o hash MD5 da página da Web para um novo buffer do emacs.Então, após baixar o arquivo .tar.gz, execute:

    md5sum arquivo baixado.tar.gz

    em um buffer de shell.Com esses dois buffers exibidos lado a lado nas janelas do emacs, posicione o cursor em cada janela no início da soma de verificação e execute "compare-windows".Se forem iguais, o cursor em cada janela será posicionado no final de cada checksum.

  6. No ponto anterior, dei o exemplo de execução de “compare-windows” nas linhas:

    Qual a diferença entre esta linha e a outra?

    Qual é a diferença entre esta linha e a outra?

    "compare-windows" deixará o cursor posicionado no apóstrofo de cada linha.Então, agora você sabe quais personagens diferem.Mas que personagens são eles?Digite o comando de duas teclas CTRL-x = e o emacs exibirá o caractere, seu valor ascii em octal, decimal e hexadecimal, o deslocamento do caractere desde o início do arquivo e o deslocamento do caractere desde o início da linha.Como ASCII é uma codificação de 7 bits, todos os caracteres ASCII têm seu bit de ordem superior desativado.Depois de ver que o valor do primeiro apóstrofo é 0x27 e o segundo é 0x92, é óbvio que o primeiro está no conjunto de caracteres ASCII e o segundo não.

  7. O Emacs foi um dos primeiros IDEs, talvez o primeiro.Possui modos para idiomas específicos.Acho-os úteis para impor recuo consistente em meu código para torná-lo mais legível.Também há funcionalidade integrada para compilar e depurar código.Eu não uso muito a funcionalidade de compilação porque quando eu estava escrevendo para uma linguagem compilada como C, estava acostumado a fazer isso em um prompt do shell.A funcionalidade de depuração foi muito boa para C e C++.Ele integrou o gdb ao editor de tal forma que você obteve praticamente a mesma funcionalidade que os recursos de depuração agora no Eclipse, mas não desperdiçou o espaço da tela como fazem os IDEs modernos baseados em GUI.Teoricamente, a integração do depurador deveria ser fácil de ser aplicada a praticamente qualquer outra linguagem, mas não verifiquei com quais outras linguagens ele funciona hoje em dia.

  8. O Emacs permite criar macros informando quando começar a lembrar o que você está digitando e quando parar.Isso é extremamente poderoso para tarefas que você realiza com frequência.

  9. O Emacs é infinitamente extensível se você conhece Lisp.Mas mesmo que eu nunca tenha aprendido o Emacs Lisp, ainda considero o Emacs uma das ferramentas mais poderosas que já usei.

  10. Atalhos de teclas do Emacs.Serei o primeiro a admitir que as combinações de teclas do Emacs são uma droga.Mas é muito mais poderoso do que qualquer outra coisa que já usei, que estou disposto a tolerar os atalhos de teclado.

  11. Numa veia humorística, anos atrás, o autor do Emacs, Richard Stallman (também criador da GPL, fundador do projeto GNU e fundador da FSF) satirizou aqueles que tratam vi vs.emacs como uma guerra santa.Ele inventou o personagem “Santo IGNÚcio” da Igreja de Emacs.Nesse disfarce, Stallman comentou: "Às vezes as pessoas me perguntam se é pecado na Igreja do Emacs usar o outro editor de texto vi.Bem, é verdade que vi vi vi é o editor da besta, mas usar uma versão gratuita do vi não é pecado, é uma penitência." (Veja http://stallman.org/saint.html.Há também uma foto fofa dele, mas como sou novo no StackOverflow, não me permite postar mais de um URL.Então vá para o mesmo domínio, mas busque o arquivo saintignucius.jpg)

Usei o Vim por 10 anos antes de me aprofundar no Emacs há 2 anos.Tenho uma lembrança razoavelmente recente de como minha curva de produtividade mudou ao longo do tempo.

Meus pontos são todos condicionais, YMMV, dependendo de seus pontos fortes e experiência.

Se você usou o Unix e a linha de comando por tempo suficiente para estar familiarizado com C-a, C-e, C-n, C-p, C-k, C-y, etc, conforme eles funcionam no shell, não demorará muito para fazer a transição para o uso dessas mesmas ligações (o padrões) no Emacs.Recentemente descobri que o XCode também usa essas ligações.

Se você se sente confortável com um editor sempre em execução, cuidando de buffers (como faria com as guias do navegador) e, portanto, vivendo no aplicativo (como faria com aplicativos Web2.0 no navegador), o Emacs provavelmente mostrará melhorias imediatas de produtividade.

Se você geralmente trabalha em projetos de muitos arquivos relacionados, essa persistência traz alguns benefícios adicionais na manutenção do contexto desse buffer.Cada buffer é contextualizado em seu arquivo aberto, permitindo o uso conveniente de várias ferramentas de aumento de produtividade para o seu projeto (como grep-find, eshell, run-python e slime).Isso, juntamente com a conclusão de texto, yasnippets, etc., começa a parecer uma pequena fração com um IDE, embora ad-hoc e fortemente individualizado por sua configuração.Isso está além de serviços mais civilizados do tipo IDE do Emacs, como o BCE.

Minha produtividade diminuiu inicialmente quando digitei "jjjkkk" constantemente Esc-Esc-Esc-Esc durante a primeira semana ou mais.Na semana seguinte, comecei a usar cautelosamente as teclas de navegação corretas.Então descobri o arquivo de configuração ...Honestamente, se eu tivesse Kit inicial do Emacs desde o início, eu teria dito que minha produtividade voltou lentamente à paridade durante a 3ª-4ª semana, mas fui até a toca do coelho do arquivo de configuração.Um colega meu, porém, acabou de fazer a transição do vim para o emacs e pegou o Starter Kit e está a caminho.Na primeira semana ele parece confortável e aproveitando todos os benefícios surpresa (essa sensação provavelmente durará uma década).

Finalmente, se você cometer erros, você ganhará imediatamente produtividade (e confiança) com o anel circular de matar/arrancar e desfazer.Pessoalmente, também sou um fã de desfazer específicas de regiões.

Minha resposta curta é Sim, vale a pena dedicar de 3 a 4 semanas com uma diminuição na produtividade para aprender o Emacs.Mesmo se você decidir que prefere um combo simplificado de utilitários Unix em vez do Emacs para desenvolvimento, você obterá dele uma educação amplamente aplicável além do editor.

A documentação do Emacs é uma floresta.Eu vim do Emacs para o Vim quando percebi como a documentação do Vim é organizada e como muitos dos recursos são compatíveis.Não sei o que está no caminho de um especialista em Emacs, mas vou avisá-lo que aprender a fazer algo útil leva muito tempo e não o tornará melhor no nethack.Fique com o Vim.

Companheiro de texto é um Emacs melhor para Macs, embora isso não o ajude com o Solaris.O Eclipse é bem legal e tem muitos plugins.

O Emacs proporcionará um ganho de produtividade se você estiver disposto a aprender e personalizá-lo para atender às suas necessidades.A maioria das pessoas não é.Para aumentar sua produtividade, você deve usar a ferramenta para mais do que uma simples edição - a maioria das pessoas nunca passa da simples edição.

Aqui está um teste rápido:você personalizou seu gerenciador de janelas para tornar seu ambiente mais eficiente (adaptado para atender às suas necessidades)?Se 'não', provavelmente você não obterá o ROI aprendendo o emacs.

Dito isto, se você estiver desenvolvendo Java, o Eclipse é a resposta padrão, então sua pergunta é bastante discutível.

Fiquei muito feliz com meu Vim, mas assim que ouvi falar modo organizacional, comecei a aprender Emacs.org-mode pode ser um forte motivo para aprender Emacs.

Eu amo o emacs e o uso todos os dias.

Dito isto, não creio que o custo da aprendizagem será recuperado por ganhos de produtividade no futuro.

Se você está programando Java, precisa de um bom IDE.O Emacs segue um caminho justo para ser um, mas vamos ser sinceros, IDEA e outros venceram sem problemas.(o emacs provavelmente inspirou muitos desses IDEs, mas isso é outra história).

Duas vezes tentei aprender Emacs.Simplesmente não se ajusta ao modo como meu cérebro funciona e, por isso, não o uso.

O Emacs (ou vim) não é significativamente melhor que o vim (ou Emacs).Ambos têm muitas opções a acrescentar que lhes permitem fazer coisas incríveis.Não tenho dúvidas de que tudo o que você pode fazer no Emacs também pode ser feito no Vim, mas não no padrão.

Experimente o Emacs.Veja se cabe melhor.É uma situação sem perdas.

Quero examinar mais detalhadamente o emacs, mas simplesmente não consigo usá-lo por longos períodos de tempo;dói minhas mãos.Estou fazendo algo terrivelmente errado?

vim e emacs, eles são os editores mais capazes e já o são há algum tempo.Se você conhece um muito bem, duvido que ganhe tanto no processo...

No entanto, é sempre uma boa idéia examinar o plug -in que está disponível, pois alguns novos plugins podem fazer maravilhas para a produtividade.

/Johan

Não (e usei os dois).

Na mesma linha de não procurar uma guerra religiosa (mas vá em frente e me dê um voto negativo se achar que deve), por que você acha que a única opção para o vi é o emacs?É o sistema operacional em que você desenvolve ou apenas as opções que você explorou?

O cenário de desenvolvimento Java desfruta de alguns dos melhores IDEs atualmente (gratuitos e pagos), se não o melhor quando se trata de edição de código e suporte à refatoração. O IntelliJ IDEA ainda possui um plug-in vi que pode ajudá-lo a se sentir mais em casa, por exemplo (não tenho certeza se algo semelhante está disponível para Eclipse).Embora a mudança de ferramentas implique uma curva de aprendizado, o tempo gasto nessa mudança pode valer a pena se o salto for grande o suficiente.

Quão rápido você digita?Se você caça e bica, então o emacs não é para você.Se você for rápido, pode ajudar não ter que pegar o mouse o tempo todo.

Geralmente, o emacs é mais poderoso que o vi.Você poderia fazer muito mais coisas no emacs.

Sua produtividade aumentará se você decidir dedicar algum tempo para programar seu editor de texto.Dos dois editores, o emacs apresenta melhor framework ou customização constante.Se você não programa seu editor de texto, fique com o que for confortável.

Uma boa razão para aprender o Emacs é porque outros programas também usam atalhos de teclado do Emacs.Você pode usar atalhos de teclado do Emacs em um prompt do bash, por exemplo, ou qualquer outra coisa usando o GNU readline.É bom aprender o movimento básico e a exclusão de palavras/linhas e desfazer/refazer acordes no Emacs para que você possa usá-los em outros programas.Sua produtividade aumentará nessas outras ferramentas mesmo se você nunca mais usar o Emacs.

Eu conheço Vim e Emacs, e o Vim se adapta melhor ao meu cérebro e aos meus hábitos.Mas outras pessoas afirmam o mesmo sobre o Emacs.Você nunca sabe por si mesmo, a menos que tente.Não demora muito para aprender o Emacs bem o suficiente para ver se você vai gostar dele.

Minha produtividade realmente aumentará?

Nos primeiros dias/semanas, absolutamente não.

Depois que você parar de ler o tutorial toda vez que quiser editar algo - claro.

Emacs é mais "poderoso" que o vim, seu mecanismo de script é muito mais flexível e há muito mais scripts, modos e similares criados em torno do emacs.

Dito isto, o oposto é verdadeiro..Se você gastasse a mesma quantidade de tempo melhorando seu conhecimento sobre o vim, você poderia ser igualmente produtivo.

Talvez não seja produtivo da mesma maneira - eu diria que o vim é mais rápido para editar arquivos, o emacs é melhor para fazer todo o resto (novamente, eu diria pessoalmente coisas como flymake-mode, as ligações VCS são mais rápidas de usar do que o equivalente do vim)

Concordo com Alan Storm:"porque os padrões e metáforas usados ​​no Emacs podem não estar alinhados com o seu cérebro"

Este é um fator muito importante.Cérebros diferentes se adaptam de maneira diferente a interfaces diferentes.

Alguns dos recursos principais - e facilmente disponíveis - pelos quais eu realmente adoro o Emacs e que considero como intensificadores de produtividade:
1.Recurso "yank-pop" - cada corte/cópia é salvo em uma pilha para que você possa escolher posteriormente qual colar (não sei se o vi/Vim tem isso, mas a maioria dos IDEs Java não)
2.o mapeamento de navegação com a tecla Ctrl - permite que você navegue em seu arquivo sem tirar as mãos para usar as teclas de seta.(a vinculação de teclas em outros editores ajuda, é claro)
3.disponível em quase todas as plataformas (verdadeiro também para o vi/Vim, é claro) - seja baseado em GUI ou em texto (IDEs Java também estão disponíveis na maioria das plataformas, mas apenas no modo GUI, e são significativamente maiores e precisam ser instalados separadamente, enquanto o Emacs geralmente está mais amplamente disponível - sistemas BSD / *nix / Linux / Mac
4.Prefiro que meu editor fique fora do caminho até que eu precise dele - a exibição espartana do Emacs me obriga a pensar antes de digitar.
5.As teclas de navegação básicas no Emacs estão universalmente disponíveis - no meu Mac OS, posso usar essas teclas no terminal, mac mail, etc.

Em última análise, se a filosofia do Emacs lhe agrada, você fará um esforço extra para aprendê-la.E isso irá recompensá-lo.

Como o vi/Vim e o Emacs são bastante próximos em termos do que podem ou não fazer, a produtividade com esses dois editores vem da experiência em usá-los.

Na minha opinião, sendo um programador, você não demorará muito para ter uma ideia geral sobre o Emacs depois de começar a usá-lo.Outros não podem dizer muito, você precisa experimentar por si mesmo para saber.

Quanto a mim, uso os dois.É como levar mais de uma arma para uma guerra, usar a arma certa nas circunstâncias certas.;)

Eu gosto do Emacs, você pode estendê-lo de acordo com suas necessidades - a meu ver, qualquer sistema que você possa estender sozinho é digno de um prêmio.

Isenção de responsabilidade: Eu sou ignorante.Sou usuário do emacs há cerca de 4 anos e do vim há cerca de 6 meses, talvez mais de 15 se você contar todas as vezes que tentei aprender e odiei.(A distinção entre modo escrita e movimento me mata.Toda vez.Então, se isso não te matar, minha opinião pode ser completamente inútil.) Dito isso, acho que minha opinião é interessantemente diferente das outras 26 que vi aqui, então vou expressá-la.:Disclamador

Minha opinião:

  • O Emacs é melhor para digitação, especialmente em grande escala "Estou escrevendo um novo recurso e demorará um pouco até que eu tentar para ver se funciona".
  • O Vim é melhor para edição, especialmente edições rápidas.

Quando preciso entender e hackear 8 arquivos simultaneamente, as propriedades do Emacs como um gerenciador de janelas lado a lado com multi-buffer (buffers têm uma correspondência de 1,2:1 com arquivos, geralmente são a mesma coisa, mas não são necessariamente) regexp -pesquisar (e substituir) são incríveis.

Se eu não gosto de alguma coisa pequena por causa de git diff no shell (eu não uso os recursos VC do emacs com muita frequência, embora quando os uso eu os adore) eu abro com o vim e saio mais rápido do que poderia acertar Alt-TAB.

O fato dos comandos de edição do Emacs estarem mais prontamente disponíveis durante a digitação torna a digitação muito mais rápido do que no Vim. Ctrl+a é muito mais rápido que ESC ^ i, e você não tem a carga cognitiva de "eu quero a ou i ou o ou O..." no qual, meu Deus, odeio pensar nisso.E o mesmo para todos os outros comandos de movimento.

Eu digito mais rápido, muito mais rápido, no Emacs.Isso significa coisas como Modo organizacional (que eu uso para tudo:Listas TODO, rastreamento de bugs, notas, e-mails longos, documentação...) fazem mais sentido (para mim) no Emacs do que fariam no Vim.

E Elisp é incrível, embora seja uma droga.Isso compensa totalmente as expressões regulares quebradas do Emacs:você pode usar todo o poder do emacs em todos os lugares, inclusive em uma substituição de regexp de vários arquivos.E em trechos de texto.

Se você está preocupado com a saúde das suas mãos escolha Vim.

Sofri com um ataque de LER no passado e descobri que um dos principais culpados era o "acordamento", ou seja,mantendo pressionadas muitas teclas ao mesmo tempo.O Emacs usa acordes extensivamente, enquanto o VIM usa comandos de uma única letra encadeados em rápida sucessão.Isso coloca muito menos pressão sobre suas mãos, pois os músculos não precisam se torcer e se contorcer para executar comandos no editor.Lesões devido a LER podem arruinar sua produtividade, portanto, em seus cálculos, certifique-se de levar isso em consideração.

Eu realmente não vejo razão para mudar.Eu uso o vi há muito tempo e estou bastante confortável com ele;aproximadamente a cada seis meses eu instalava o emacs para experimentar e depois voltava rapidamente.Sim, havia coisas que eu preferia no vi, mas a principal razão pela qual nunca continuei com ele é porque não vale a pena investir tempo para aprender outro editor quando já conheço um extremamente capaz.
Me lembrei disso estudo bastante datado.

Na minha opinião, SLIME é a única razão para mudar para o emacs se você já é proficiente com o vi.

Não

Eu uso o emacs há anos, sou um convertido do VIM e adoro isso.

Mas quaisquer ganhos de produtividade decorrentes de um editor melhor e programável serão totalmente eliminados pela enorme quantidade de trabalho necessário para pegar o jeito do emacs.Ele foi projetado como um editor de console e a ideia de interface não é sua.

E mesmo quando você tiver conseguido isso completamente, sua produtividade extra será expressa principalmente no lisp extra do emacs que você pode escrever.

Quem se importa?É muito divertido, e lisp são os cachorros!Se você quiser 'fazer as coisas', esqueça a programação.Você sempre pode contratar programadores para ‘fazer’ ‘coisas’.

A única circunstância sob a qual eu recomendaria aprender emacs por razões de produtividade é se você é um programador lisp/scheme/clojure.Ele cria um ambiente lisp tão bom que os poucos segundos que ele economizará toda vez que você quiser fazer alguma coisa resultarão rapidamente em um ganho real.E elisp (que está em relação ao lisp assim como as macros do Excel estão em relação ao ALGOL) parecerá muito menos estranho se você já usar um lisp real.

Se você tentar, use-o em um console virtual onde parece mais uma maneira sensata de organizar um editor.Somente quando isso fizer sentido, tente usá-lo sob um sistema de janelas, que irá combatê-lo.

Numa resposta anterior, Aristóteles Pagaltzis escreveu:"Vim se destaca nos pequenos...Você pode facilmente fazer coisas no Vim no curso normal da edição que exigiriam que você passasse para scripts no Emacs."

Mudei para o EMACS depois de mais de uma década usando exclusivamente o VI e, inicialmente, eu teria concordado com a alegação: "Você pode fazer as coisas facilmente no VIM no curso normal da edição que exigiria que você desça até os scripts em EMACs". Mas então descobri que, usando a capacidade de macro da EMACS e uma grande contagem de repetição, eu poderia facilmente fazer com que o Emacs fizesse praticamente tudo o que o VI havia facilitado e muito mais.

A funcionalidade macro do Emacs envolve três comandos:

C-x (       start remembering keystrokes
C-x )       stop remembering keystrokes
C-x e       replay the remembered keystrokes

Por exemplo, no vi, se eu quisesse encontrar todos <a> tags em um arquivo html e adicione um target atributo, eu poderia fazer algo como o seguinte:

:g/^<a/s/>/ target="_blank">/

Este exemplo não é perfeito, pois assume que todos <a> as tags estão em uma linha sozinhas.Mas é bom o suficiente para ilustrar como realizar a tarefa equivalente em dois editores diferentes.

Para obter o mesmo efeito facilmente no emacs, eis o que eu faço:

1.  C-x (
2.  M-C-s <a\>
3.  C-b
4.  C-s >
5.  C-b
6.   target="_blank"
7.  C-x )
8.  C-u 10000 C-x e

Aqui está uma descrição do que cada tecla acima faz:

1.  start remembering keystrokes
2.  regex search for <a.  Note that the "\>" after the "a" is not HTML.  It's emacs regex notation for end-of-word.
3.  back up one character - as a side-effect this gets you out of search mode
4.  search for the next ">"
5.  back up over the ">"
6.  enter space as an attribute-delimiter followed by the target="_blank" attribute
7.  stop remembering keystrokes
8.  replay the remembered keystrokes 10,000 times or until the search fails

Parece complicado, mas na verdade é muito fácil de digitar.E você pode usar essa abordagem para fazer muitas coisas que o vi não pode fazer, sem nunca recorrer ao código Lisp.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top