Eu uso um IDE (Eclipse) para desenvolver software. Por que devo mudar para o vim ou emacs? [fechadas]


31

Meu trabalho diário é desenvolvedor Java / Web. Eu tenho usado o eclipse por ~ 5years. Eu acho que é excelente e eu também uso Webstorm para javascript e html / jsp.

Ocasionalmente, preciso ssh no servidor e mexer nos arquivos de configuração; por isso eu uso o vi e me dói. Preciso acessar uma página da Web listando a sintaxe / comandos: pressione escape e, em seguida, asterisco, vire três vezes e o texto será inserido duas linhas acima do cursor . Isso é tão pouco intuitivo para mim, e imagino quem cresceu no final dos anos oitenta e noventa.

Aqui estão as principais razões pelas quais eu acho que o eclipse é brilhante (e eu assumo outros IDEs) e não mude para o emacs e / ou vim.

  • Erro ao destacar sem necessidade de recompilar o projeto.
  • Assistente de código.
  • Refatoração.
  • Chamada de abertura hiearchy / Declaração de abertura.
  • Totalmente integrado ao controle de origem.
  • Depurador está incluído.
  • disponibilidade de plugins de terceiros - por exemplo, findbugs / checkstyle.

Um dos argumentos que ouvi é que, com o emacs / vim, você pode criar seus próprios plugins - tudo bem, mas você também pode fazer isso no eclipse. Mas você não precisa, pois tudo já está lá! É como dizer: compre este carro semi-construído, você pode fazer o resto sozinho.

Por que as pessoas estão usando o emacs / vim? As pessoas que o utilizam realmente trabalham em projetos complexos orientados a objetos em grandes organizações?

Quais são os motivos para mudar para o vim / emacs. Como minha produtividade aumentaria se eu trocasse?


1
Você pode reformular o título? Não faz sentido.
Vetle

@vetler melhor?
NimChimpsky

5
Eu costumo usar nano, em vez de vim, simplesmente porque não uso uma CLI com frequência suficiente para ter aprendido todos os vimcomandos. Se você usá-lo apenas ocasionalmente, eu acho que algo simples como nanopoderia servi-lo melhor ...
Dean Harding

Muito melhor! :)
Vetle

Há muito tempo, quando fui apresentado ao Unix, tentei o vi e o emacs e acabei usando o emacs porque vi parecia muito estranho e não óbvio (quero dizer, acrescentar texto ao final de uma linha é complicado, certamente há algo errado). E os modos de comando / edição do vi não funcionaram para mim pessoalmente.
Skizz

Respostas:


36

Use qualquer ferramenta que atenda às suas necessidades. Conhecer o VIM ou o Emacs é uma coisa boa se você precisar fazer login em um servidor remoto e editar um arquivo de configuração ou algo semelhante. Conheço o VIM razoavelmente bem, mas não o usaria para desenvolver em Java. É para isso que são criados o Eclipse, o Netbeans etc.


5
@NimChimpsky Eu uso o emacs para algumas linguagens como C, ruby, python, haskell. Mas para Java ou C #, acredito que é melhor usar um IDE. No meu trabalho eu uso c # com o VS. Basta usar a ferramenta que achar mais produtiva.
hiena 18/11/10

8
É engraçado que se você perguntar a alguém "Por que aprender vi", a resposta SEMPRE é "algum dia talvez você precise fazer login em um servidor remoto e editar algum arquivo de configuração". Gostaria de saber quantos desenvolvedores realmente tiveram que fazer isso.
Oliver Weiler

2
PS: Eu pessoalmente amo o vi, mas não porque eu acho que é o melhor editor do mundo, mas porque me faz sentir superior :-).
Oliver Weiler

2
Método @ Helper: Eu certamente tenho que fazer isso de vez em quando! A menos que você esteja trabalhando estritamente em um ambiente MS, isso acontecerá.
user281377

1
Para fazer pequenas edições nos arquivos de configuração, você certamente não precisa do Emacs ou Vim, embora eles sejam excelentes, mas não valem o esforço de aprender onde o Nano poderia ser usado da mesma forma.
Anto

39

Emacs e Vi ainda têm um lugar.

  • Eles estão onipresentemente disponíveis em ambientes Unix e similares ao Unix e podem ser instalados na maioria das outras plataformas populares.

  • Eles são populares e estáveis, portanto, aprendê-los uma vez compensa a longo prazo.

  • Eles são executados sobre um terminal de texto, para que você possa usá-los em sessões telnet e ssh.

  • Eles fornecem modos de edição e destaque de sintaxe para uma ampla variedade de idiomas, incluindo idiomas muito novos e muito raros. (Essa é uma das minhas vantagens favoritas.)

A chave para entender esses programas, porém, é saber quais problemas eles originalmente deveriam resolver. Para o Vi, isso estava editando arquivos de texto em conexões terminais tão lentas quanto 300 Baud. Nesse ambiente, você não deseja exibir menus ou alterar radicalmente o conteúdo da tela, se puder evitá-lo.

O Emacs foi projetado para ser usado em um ambiente mais rápido. Sua força era poder ser carregado uma vez e nunca sair. O usuário poderia realizar qualquer outra tarefa necessária no Emacs sem sair, e geralmente de uma maneira mais amigável do que se tivesse que fazê-lo na linha de comando. As pessoas não tinham um ambiente gráfico de área de trabalho com uma janela do Emacs aberta. O Emacs permite que o usuário realize quase qualquer tarefa normal (e muitas estranhas) com apenas alguns toques de tecla. Qualquer coisa que não esteja embutida pode ser script.

Obviamente, as necessidades das pessoas mudaram muito desde que esses programas foram lançados, mas eles ainda têm alguns pontos fortes. Aprendi o básico de ambos e os uso semanalmente. Ainda assim, acho que seus pontos fortes costumam ser exagerados. Eles alcançaram um status tão lendário que as pessoas não admitem suas fraquezas e tendem a pensar que estão fazendo algo errado se o Emacs / Vi não as tornar mais produtivas que o Eclipse ou o Visual Studio.

Agora ao ponto.

Java é uma linguagem popular, com excelente suporte no Eclipse, e é provável que você esteja desenvolvendo código em um sistema operacional moderno que permita realizar rapidamente tarefas comuns e criar scripts para outras pessoas sem fazê-lo através do seu IDE. Eu não acho que faria sentido para você mudar.


+1 para idiomas raros, eu acrescentaria que idiomas dinâmicos e idiomas muito difíceis de analisar também não são uma grande vantagem no emacs, mas um IDE não pode oferecer muita vantagem sobre o emacs
jk.

16

Uso o emacs há mais de 5 anos. Não posso mais dizer as combinações de teclas que estou usando, meus dedos apenas se lembram delas e precisam olhar o teclado apenas para ver o que minhas mãos estão digitando.

Alguns anos atrás, comecei a usar o Eclipse e não há chance de voltar ao emacs livremente. Desculpe a memória muscular, mesmo sentindo sua falta C-x r SPC 1, Eclipse me torna muito mais produtivo e é isso que conta.

Não, acho que você não deve mudar , mas dedique algumas horas para aprender o básico do vim, para não precisar mais procurar.


Você poderia elaborar o que você poderia fazer mais rapidamente no Eclipse do que no Emacs?
Gordon Gustafson

1
Hoje em dia, não acho mais que o Eclipse seja bom. Mas ele ainda supera o emacs de longe quando se trata de refatoração e o fato de entender a semântica de uma linguagem de programação que facilita a pesquisa etc.
Martin Wickman

7

Por que devo mudar para o vim ou emacs?

Provavelmente, você não deve mudar . O Vim é um excelente e poderoso editor de texto, mas não substitui um IDE e não deveria! O Eclipse é muito bom em seu subconjunto de itens específicos de IDE e o vim é muito bom em seu subconjunto de itens específicos de edição de texto. Cada um tem seu próprio foco diferente.

Eu sei que existem plugins que estendem a funcionalidade do vim para que ele possa fazer muitas das mesmas coisas específicas do IDE que um IDE. Mas ainda não é a principal força do vim, e um IDE quase sempre será capaz de fazê-lo melhor. Porque é nisso que eles estão focados.

O que faço no meu trabalho diário é usar o Visual Studio e o vim para editar C #. Funciona muito bem para mim, e eu nunca cortaria um deles para confiar exclusivamente no outro.

No que diz respeito ao emacs, eu não sou especialista, mas não acho que ele possa competir com os recursos de IDE do Eclipse quando se trata de Java (por favor, corrija-me se estiver errado). Se você está desenvolvendo no lisp, certamente pode ser considerado um excelente IDE, mas não acho que ele tenha o mesmo suporte para Java.

Portanto, se você deseja que um editor de texto mais poderoso use junto com o Eclipse, eu recomendaria definitivamente que você aprendesse o vim ou o emacs. Mas como um complemento, não como um substituto . Ele pode realmente render a longo prazo, mesmo que nenhum deles tenha uma curva de aprendizado particularmente fácil:)

Aqui está uma boa leitura longa sobre os pontos fortes do vim. E aqui está uma lista de alguns truques legais que você pode fazer.


6

Basicamente, leia isto (PDF) para ver por que o Emacs é poderoso. Depois que você conhece o Lisp, é quase trivialmente fácil criar extensões para ele (eu tenho vários fluxos de trabalho e implantações de controle de origem roteirizados por meio de um complemento que escrevi para mim employer-mode). Tanto quanto o que você listou acima;

  • Erro ao destacar sem necessidade de recompilar o projeto. Não faz sentido para todos os idiomas. Você pode integrar facilmente REPLsvários idiomas a ele. Agora, eu tenho ruby, python, haskell, common lisp, schemee erlangtodos viciado em emacs. Aliás, o addon JavaScript js2-modepossui uma "compilação" incremental completa, portanto destaca itens como erros de sintaxe, portanto é certamente possível, mas não a norma
  • Assistente de código. há um addon para esse chamado autocomplete.el, acredito, verifique o wiki do Emacs
  • Refatoração. Suponho que você queira dizer "refatoração automática", o que não faz sentido em todos os idiomas. Provavelmente existe para alguns, mas não sei.
  • Chamada de abertura hiearchy / Declaração de abertura.
  • Totalmente integrado ao controle de origem. Ele foi git-modeincorporado no Emacs 22.3, não tenho certeza sobre outro controle de fonte
  • Depurador está incluído. Idioma por idioma aqui. Geralmente, se ele tem integração com REPL, também possui um depurador Emacs, mas não é universal
  • disponibilidade de plugins de terceiros - por exemplo, findbugs / checkstyle. não sei sobre esses específicos, mas há muitos addons para isso, desde o por que não é este pacote básico, útil, até o totalmente frívolo

Dito isto, se você não gosta do Lisp e não pretende aprender, não posso recomendar honestamente o Emacs. A vitória que você obtém disso é aprender sobre a criação de ferramentas e a aplicação desses princípios para aumentar sua própria produtividade, não obtendo um monte de mods disponíveis e reunindo-os.


A necessidade de um editor Haskell mais conveniente é o meu principal driver, tentando aprender emacs ou vim (eu gosto mais do emacs;)) VS é ótimo para C #, F #, etc, mas a falta de bons editores para a maioria dos idiomas menores torna o emacs muito atraente como uma ferramenta de uso geral.
CodexArcanum

Pelo menos no CEDET do Emacs-land, o cedet.sourceforge.net (coleção de ferramentas de ambiente de desenvolvimento do Emacs) realmente esbate a linha entre o editor de texto e o IDE. Isso é direcionado principalmente para C / C ++ (e outros) e fornece coisas como um navegador de projeto (e geração automática de Makefile), conclusão de código, assistência de código (mostra protótipo de função no cursor), pula para outros usos de var / function, auto construtores / destruidores de gen e etc. É a enorme extensibilidade do Emacs que permite esse tipo de ferramenta.
Chris

3

Eu vejo duas opções aqui:

  • Use o Nano - é exatamente como o Bloco de notas no Windows para Linux. Não requerendo combinações de teclas de atalho, basta digitar nano somefile.confe você tem um bom editor. Você pode até adicionar realce de sintaxe
  • Mantenha o programa localmente e sincronize com o SCP no servidor - faço isso quando preciso trabalhar em um site pequeno, mas não tenho recursos suficientes para executar o apache localmente. Simplesmente trago o WinSCP, trago os diretórios que desejo e uso "Manter os arquivos remotos atualizados". As alterações geralmente são refletidas em segundos
  • Use um plug-in no seu editor / IDE para trabalhar "diretamente" com o arquivo remoto - Antes de me importar com o controle de revisão, simplesmente iniciei o Notepad ++ (meu editor preferido) e usei o NppFTP para trabalhar nos arquivos. O NppFTP é mais rápido que a opção WinSCP, pois o Npp informa imediatamente quando um arquivo é salvo, que é carregado imediatamente. No entanto, como eu disse, você perde o controle de revisão. Tenho certeza que existe um plugin para o Eclipse que você pode usar

Espero que isto ajude


+1 para nano, tenho que amar.
Dashogun 18/11/10

+1 Nano é incrível. Se eu soubesse disso antes de infinitos anos de dor usando vi.
Oliver Weiler

2

Pessoalmente, gosto do Vim porque é extremamente bom na edição de texto, ou seja, é muito ergonômico (as combinações de teclas não pressionam muito minhas mãos e não preciso usar tanto o mouse) e eficiente de usar quando você pega o jeito. (que, obviamente, levará tempo e paciência, já que não é o editor mais intuitivo para iniciantes).

No entanto, eu preferiria o Eclipse para desenvolvimento Java em larga escala devido aos muitos recursos que estão prontamente disponíveis. Obviamente, existem alguns plugins que podem tornar o Eclipse um pouco mais tolerável.


1

Se você está feliz com o Eclipse, não mude.

Se você pode usar o Eclipse em qualquer lugar que precisar, não mude.

Se seu projeto / empresa praticamente usa exclusivamente o Eclipse, não mude.

Se você raramente precisar de algo mais, imprima uma folha de dicas para um dos editores e puxe-a para fora da gaveta quando precisar, e depois volte a usar o Eclipse.

Consulte a (mesma) pergunta em SO: https://stackoverflow.com/questions/1346820/what-are-the-efficiencies-afforded-by-emacs-or-vim-vs-eclipse

Quanto a responder: "As pessoas que o utilizam realmente trabalham em projetos complexos orientados a objetos em grandes organizações?" - Segure seu chapéu, filho, mas a resposta é "sim". Eu trabalhei em projetos com dezenas de milhões de linhas de código usadas no caminho crítico de projetar a própria CPU executando o computador que você está usando para fazer esta pergunta. E as pessoas experimentaram o Eclipse, mas o consideraram muito lento e desajeitado (embora, reconhecidamente, não estivéssemos usando Java).


1

O emacs e o vim são editores muito configuráveis ​​e poderosos, e ambos proporcionam grandes vitórias de produtividade quando os conceitos básicos são compreendidos.

Vi vence com o que são essencialmente operações baseadas em conjuntos. Por exemplo, alterar todas as instâncias de "foo" para "bar" em uma definição de classe é uma linha.

O Emacs é igualmente poderoso, mas você precisa aprender o Emacs Lisp para usá-lo em todo o seu potencial.

Em ambos os casos, só vale a pena mudar se você planeja usar o emacs ou vi para tudo .


1

A melhor ferramenta (a curto prazo) é aquela com que você é altamente proficiente.

As pessoas usam a tecnologia com mais de 30 anos porque são altamente proficientes. Eles criaram seu fluxo de trabalho e hábitos em torno dessas ferramentas. Se você está mais familiarizado com um IDE moderno como o Eclipse, não há muitos motivos para mudar. Aprender a usar o Eclipse com mais eficiência é um investimento melhor do seu tempo (por exemplo, use o Mylyn ).


1

Atualmente, estou tentando mudar do NetBeans para o vim. Aprender vim leva tempo e prática, mas eu vejo suas vantagens, vamos chamá-las de "editores de GUI" para certos casos.

Mas, diferentemente de você, estou codificando principalmente Ruby e não preciso de toda a magia negra de geração de código, conclusão automática e refatoração de código que o NetBeans e o Eclipse oferecem. Se eu estivesse codificando Java ou C #, certamente não tentaria alternar.


Eu uso o vim há anos. Funciona muito bem com Ruby e, depois de subir na curva de aprendizado, você gostará da eficiência.
Larry Coleman #

1

Como usuário de longa data do emacs, acho o emacs bastante confortável como um ambiente de edição e desenvolvimento (e até certo ponto, ele também se integra ao processo de construção, controle de versão, pesquisa rápida contextual e afins, por isso acho que se qualifica como um "IDE").

Também me sinto realmente confortável com o uso de editores do vi e do tipo vi (comecei a usar o ed, porque achava o emacs muito complexo; em retrospecto, isso é inverso, mas me deu uma base sólida para o futuro aprendizado do vi). Eu uso o vi principalmente para "pequenas edições rápidas", principalmente em máquinas remotas onde o emacs não está instalado.

Para o seu cenário "Eu ocasionalmente preciso ssh no servidor e mexer nos arquivos de configuração; para isso eu uso o vi", recomendo um pequeno conjunto de comandos e algumas idéias gerais sobre o vi:

  • O Vi não é modal, possui os comandos "a" (anexo), "A" (anexo no final da linha), "i" (inserção) e "I" (inserção no início da linha), levando o texto para inserção como argumento e sinalizando "fim de comando" com Esc
  • h, j, k e l são teclas de movimento. PODE funcionar usando as teclas de seta, mas como a sequência típica "Eu sou uma chave de seta" no estilo VT começa com Esc, isso interrompe o comando de inserção de texto em que você não está pensando.
  • : clothum move você para a linha clothum , a linha 1 é a linha mais alta e a linha $ é a mais baixa
  • . é o comando "repetir o último comando" (consulte o primeiro marcador)

Não deve demorar mais de uma hora ou duas para brincar com o vi para estar no "Eu posso editar um arquivo de texto com confiança, mas posso não ser eficiente com ele" e isso é tão bom quanto você provavelmente precisará . Caso contrário, qualquer editor que não tenha dificuldades em converter automaticamente entre guias e espaços deve ser "bom o suficiente" para seus propósitos. Se o Eclipse estiver instalado em todos os seus servidores remotos, não vejo isso como um grande problema.


Por que o voto negativo?
Vatine 22/11/2010

1

Eu sou muito um cara do Emacs. Eu o uso em toda a minha programação e incentivo ativamente meus colegas de trabalho a usá-lo também (e eles me ignoram ativamente). Acho isso muito mais produtivo do que qualquer IDE e nunca mudaria.

A menos que eu esteja escrevendo Java ou C # (e imagino que haja outras linguagens nesta categoria). Eles têm tais grandes bibliotecas de coisas com nomes longos, que os ganhos que começa de usar Emacs são completamente perdido na tentativa de se lembrar de tudo.

Eu certamente o encorajo a experimentar o vim e / ou o Emacs. Mas é provável que você volte ao Eclipse para Java.


0

Não tenho nenhum problema com os vários editores do UNIX disponíveis, mas apenas os uso sob protesto. Não, como eu disse, porque eu tenho um problema com eles, mas porque se eu tiver que usá-los, significa que nosso processo de implantação está de alguma forma ausente.

Provavelmente, isso merece um pouco mais de contexto: trabalho em soluções de comércio eletrônico em larga escala; tudo o que governa a execução de nossos sistemas é gerado por um processo de criação / implantação com um clique. Temos uma variedade de ambientes de teste para que, a qualquer momento, eu possa fazer uma alteração via Eclipse, verificá-la nos cvs e acionar uma compilação / implementação para provar que minha correção funcionou. Então, se eu estou hackeando o 'vi', é porque não podemos esperar a recuperação de uma hora de uma implantação ou porque a implantação não cobre os arquivos que estou editando e precisa ser ampliada então (caso contrário, invadirei o vi na próxima vez que o arquivo em questão precisar ser alterado).


0

Pessoalmente, ambos os programas me levam até a parede. O problema com o Eclipse é que ele fica lento quando você está trabalhando em um projeto grande e é quando não está fazendo 'Indexação DGLP' ou o que quer. deseja atualizar seu repositório? tem 15 minutos? Ah, e que tal aquele truque bacana em que você pressiona Ctrl-C algum texto e, em seguida, pressiona-o em algum lugar, mas em vez de ir para onde você quer, abre um arquivo completamente diferente e passa por outra coisa e você fica se perguntando o que estava lá em primeiro lugar. Ah, e eu mencionei trabalhar com o eclipse em um projeto grande em uma VPN? praticamente impossível.

Quanto ao vim, é agradável e rápido supor que você conheça a variedade de combinações de teclas completamente sem sentido para fazê-lo fazer alguma coisa e boa sorte se você se encontrar em algum modo desconhecido por acidente. Além disso, com o vim, você praticamente precisa conhecer toda a estrutura de diretórios de projetos em sua cabeça para abrir os arquivos corretos. A principal vantagem do Vim é que, em teoria, você pode criar código mais rapidamente porque é tudo chave, mas, na realidade, eu não me importo com a quantidade de texto que estou escrevendo, não com o volume de texto que importa, é a qualidade do código e, geralmente, a qualidade O código requer a observação de dezenas de arquivos por horas a fio, até você descobrir exatamente a coisa certa a digitar (que geralmente é muito curta).

O que eu desejo é que alguém escreva um programa de linha de comando, como o vim, que realmente tenha uma estrutura de diretórios como o eclipse ao lado ou algo que você possa expandir / contrair e abrir arquivos. Alguém sabe algo assim?


3
Você pode simplesmente abrir um diretório em um buffer e ele listará os arquivos no diretório. Mova o cursor sobre o arquivo que você deseja editar, pressione Enter e ele abrirá o arquivo. Uma variedade de plugins vim (como o NerdTree) oferece recursos mais sofisticados, como dividir automaticamente a janela, abrir o arquivo em um painel e manter a árvore de diretórios no outro. A dificuldade geral com o vim e o emacs não é a falta de recursos, é que os recursos não podem ser facilmente descobertos pelos menus de navegação, você deve ler a documentação de ajuda.
Charles E. Grant

A última parte da sua resposta deve ser outra pergunta.
Matthieu

quando você usa o trabalho "sem sentido" para descrever as combinações de teclas, você sai como amador. Além disso, a árvore nerd faz o que você está descrevendo, quando conectado ao vim.
Arunav Sanyal

-1

Se você não estiver satisfeito com o VIM ou o EMACS, poderá procurar nessa máquina outros editores de texto. Pode haver algum sabor de nedit ou gedit ou algo que você possa usar, que terá comandos mais familiares (ctrl x, c, v es fazem o que você esperaria, por exemplo).

Você provavelmente tem mais de duas opções na sua distribuição, vale a pena dar uma olhada.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.