Quais ganhos de produtividade específicos o Vim / Emacs oferece em relação aos editores de texto GUI?

100

Isso não é para ser um troll ou flamebait ou qualquer coisa assim. Estou usando o Vim como meu editor de console preferido há alguns meses (para editar arquivos de configuração enquanto estiver no meu terminal), mas não acho que poderia suportar meu trabalho diário normal de escrever aplicativos da web , que faço com um editor de texto GUI (que não é importante).

Eu sinto que meu editor de texto GUI pode fazer tudo que eu preciso para o meu trabalho. Ele tem uma busca / substituição decente com históricos de autocompletar para ambos. Possui realce de sintaxe, numeração de linha, uma interface com guias, fácil copiar e colar, etc. A única coisa que meu editor atual está faltando é a correspondência de expressão regular, mas há muitos editores de texto GUI que farão pesquisa / substituição regex.

Dado o que acabei de dizer, quais vantagens de produtividade o Vim (ou mesmo o Emacs) tem sobre um editor de texto GUI, além do fato de que ele está instalado em todos os computadores. Eu gostaria de tarefas específicas que sejam melhores / mais rápidas no Vim / Emacs ou que simplesmente não sejam possíveis com editores de texto GUI existentes.

Adam Plumb
fonte
1
Não me lembro de ter instalado o vim em nenhuma das minhas máquinas Windows ...
Greg
9
@Greg: Não é instalado passivamente. Você sai e faz isso sozinho. Ou você não é um verdadeiro desenvolvedor de software ou fez tanto que agora está instalando o vim enquanto dorme. :-)
TED
6
Isso deve ser marcado como uma questão do Community Wiki, pois é subjetiva.
STW
7
@Yoooder: Por que as pessoas ficam reclamando sobre as perguntas do wiki da comunidade? Não encontrei nenhuma regra governando os wikis da comunidade.
John Smith

Respostas:

111

Para Vim:

  • O Vim tem melhor integração com outras ferramentas (comandos shell, scripts, compiladores, sistemas de controle de versão, ctags, etc.) do que a maioria dos editores. Mesmo algo simples como :.!canalizar a saída de um comando em um buffer, é algo que você não encontrará na maioria dos editores de GUI.

  • Uma interface com guias não é tão boa quanto a interface "em janela" que o Vim / Emacs oferece. Você pode ver dois ou mais arquivos ao mesmo tempo lado a lado. Quanto mais você pode ver na tela, mais você libera sua mente para pensar sobre o seu problema, em vez de fazer a contabilidade mental de nomes de variáveis ​​e assinaturas de funções.

  • Não subestime o poder das expressões regulares do Vim. Existem muitas extensões específicas do Vim para corresponder a uma coluna específica, uma marca, a posição do cursor, certas classes de caracteres (palavras-chave, identificadores) etc.

  • Integrado diffe grep(independente de plataforma para que você não precise baixar e aprender uma nova ferramenta toda vez que trocar de computador).

  • O modo de bloqueio visual (para editar colunas) é algo que falta a muitos editores, mas sem o qual não posso viver. Eu choquei e assustei as pessoas no trabalho usando apenas isso, fazendo algumas edições em alguns pressionamentos de tecla que alguém teria passado dez minutos fazendo manualmente.

  • Vários registros de copiar / colar. Quando você tem apenas uma, acaba passando por estranhas contorções para evitar bater na área de transferência. Você não deveria.

  • O sistema desfazer / refazer do Vim é imbatível. Digite alguma coisa, desfaça, digite outra coisa, e você ainda pode recuperar a primeira coisa que digitou porque o Vim usa uma árvore de desfazer em vez de uma pilha. Em quase todos os outros programas, o histórico da primeira coisa que você digitou se perde nessa circunstância.

  • Mover, copiar, colar e deletar texto é incrivelmente rápido no Vim. Os comandos são simples, pressionamentos de tecla única e combináveis. Some todas as vezes que você faz um destaque cuidadoso e trabalhoso do mouse e Ctrl-X, a seguir substitua todos por um da((exclua um conjunto de parênteses correspondentes e tudo o que há neles). Isso economiza mais tempo do que você pensa

  • As pequenas coisas, como *pesquisar a palavra sob o cursor, .repetir um comando ou %saltar entre um parêntese de abertura e de fechamento. Muitos deles para listar.

  • Linguagem de script integrada e poderosa capacidade de mapeamento de teclas e macro para que o editor possa ser estendido de todas as maneiras que você precisar. Toneladas de scripts já escritos e disponíveis para download.

Se você olhar bem de perto, verá que mesmo os recursos que outros editores também possuem, o Vim geralmente se sai melhor. Todos os editores têm realce de sintaxe, mas o Vim tem um arquivo de sintaxe para quase todos os formatos de arquivo existentes, geralmente com várias opções de configuração, e é muito simples escrever o seu próprio. Muitos editores lidam com diferentes codificações de arquivos, mas o Vim oferece maneiras muito específicas e infalíveis de definir codificações de arquivos e converter entre eles. A primeira coisa que me impressionou no Vim é como ele lida perfeitamente com as opções de recuo de tabulação / espaço e quebras de linha do Unix / DOS em comparação com outros editores com os quais eu tive problemas na época.

Muitos desses pontos se aplicam igualmente ao Emacs (de maneiras diferentes, mas geralmente igualmente poderosas).

Brian Carper
fonte
2
Este é um bom exemplo de algumas coisas concretas que melhoram a produtividade no vim.
Adam Plumb
14
Você se esqueceu de mencionar o incrível suporte multiplataforma. Até ao ponto de usar o mesmo editor na linha de comando que você usa em um ambiente de janela.
Singletoned em
3
O ponto sobre a exibição com guias e janelas está um pouco desatualizado. A maioria dos editores de GUI que usei permitem o layout em janela.
Shawn O'Hare,
1
Org-Mode no Emacs é um grande ganho de produtividade.
bytes de
37

(vim é meu veneno; tenho certeza que emacs oferece ganhos semelhantes)

O maior ganho: não precisar tocar no mouse.

Para mim, a coisa mais prática é pular para (ou logo antes) uma letra ou combinação de letras específica, ou pular para trás, com alguns toques no teclado. Avançar pela mesma condição duas ou dez vezes é simplesmente uma questão de prefixá-lo com um número.

Se você tiver que repetir uma edição, pule para frente (2-3 pressionamentos de tecla) e, em seguida, pressione "." para repetir a última edição. Saltar para a frente (ou para trás) é mais fácil - um toque de tecla - se for a mesma condição de pesquisa.

Basicamente, com um pequeno lead-time, você pode aprender dez ou vinte atalhos de teclado que significam que você não precisa ficar mexendo a mão para pegar o mouse. Isso lhe dá três ou quatro vezes mais movimentos / comandos de edição do que você faria se tivesse que continuar segurando o mouse.

Depois de alguns dias, você ficará irritado toda vez que precisar pegar o mouse (ou pressionar <Down>15 vezes), quando estiver em um editor de GUI.

Jeremy Smyth
fonte
2
Deve-se notar que se você estiver usando o gVim (ou se tiver o gpm instalado e estiver usando apenas o vim simples no terminal), você pode usar o mouse se quiser. Existem algumas situações em que o uso do mouse é útil.
thebrokencube
1
Eu tenho "set mouse = a" no meu .vimrc, apenas no caso de eu precisar deslizar um monte de visual;)
Jeremy Smyth
Sim, o mouse pode economizar tempo para selecionar áreas de texto ou mover o cursor para um ponto específico em uma grande quantidade de texto. Caso contrário, é um desperdício.
TED de
1
Pelo que parece, posso fazer o que você descreveu usando Ctrl + Left ou Ctrl + Right em outros editores. Também ouvi dizer que você pode fazer algo como "d5w" para excluir 5 palavras ... mas Ctrl + Delete faz isso mais rapidamente.
DisgruntledGoat
4
Ctrl-Right apenas avança uma palavra. Você teria que fazer 5 vezes para avançar cinco palavras. No vim, você digitaria 5w para avançar 5 palavras :) ou 9w para avançar 9 palavras. ou) para ir para o início da próxima frase, ou} para ir para o próximo parágrafo. Existem tantos atalhos minúsculos de uma ou duas teclas para mover em todos os tipos de direções inteligentes. E se você quiser deletar tudo até o ponto para o qual acabou de mover, basta prefixar o comando de movimento com d. Então, para deletar três sentenças, d3) é tudo que você precisa :)
Jeremy Smyth
33

Sempre me perguntei por que poucas pessoas ficavam gatas com o Vim. Veja o vídeo do usuário avançado do Vim em ação:

https://www.youtube.com/watch?v=FcpQ7koECgk

Se o seu editor atual pode fazer o que está fazendo, não há necessidade de mudar! :)

Além disso, leia este http://www.viemu.com/a-why-vi-vim.html

Depois de assistir ao vídeo e ler aquele artigo, não tive escolha a não ser começar a aprender VIM. Já faz quase um ano desde que mudei para o VIM e não consigo me imaginar usando outra coisa.

SolutionYogi
fonte
4
Uau, esses vídeos são realmente fantásticos! Obrigado por publicá-los!
thebrokencube
Vídeos bem interessantes, é uma pena que demore tanto para lembrar de todos eles na prática. :)
Frerich Raabe
8
o autor do primeiro vídeo precisa aprender o modo de bloqueio visual - é mais rápido do que macros para alterar os blocos de texto na parte inferior.
Peter
23

Acho que um dos verdadeiros poderes de um editor de texto dedicado é a edição de macros. A repetição é dolorosa para muitos programadores, e escrever macros adequadas pode ser um pouco divertido. Se você não estiver fazendo tudo por meio do teclado, a criação de macros exigirá um conjunto extra de comandos em vez de usar os que você já está usando.

Stefan Mai
fonte
5
A personalização é um recurso ausente em quase todos os editores de GUI. Você pode usar um utilitário de expansão de macro de terceiros (AutoKey, qualquer que seja) para ajudar com isso, mas tê-lo integrado ao editor é útil.
Alex Feinman
Oh, só para constar. Eu trabalho com produtos da Microsoft e usar o VimEmu para Visual Studio tem sido uma dádiva de Deus. Ainda gosto de ir para casa, para o meu terminal e Vim :)
Stefan Mai
1
ViEmu é definitivamente uma dádiva de Deus. Eu iria mais longe e diria que o Visual Studio é absolutamente inutilizável sem ele. :)
thebrokencube
1
O Textpad no Windows tem isso e é incrivelmente simples: pressione Gravar, faça a macro e depois salve. Você também pode atribuir atalhos a ele. Infelizmente, não encontrei um equivalente no Linux (TP funciona no Wine, mas parece feio e perde algumas funcionalidades do Linux).
DisgruntledGoat
1
@DisgruntledGoat - Se você pode considerar ctrl-X (para "acertar o registro" e ctrl-X) para "salvar", então agora você encontrou um equivalente no Linux, Windows, Unix e todas as outras plataformas que o Emacs foi portado para.
TED de
15

Sou semi-competente com atalhos de teclado do vi, mas prefiro o Emacs em geral. A razão pela qual esses editores têm adeptos tão fervorosos é porque o modelo de edição que eles fornecem é mais poderoso do que os sistemas mais novos, que é porque fornecer "atalhos de teclado vi" ou "atalhos de teclado emacs" não é suficiente, mesmo se você não estiver usando nenhum recurso de extensão ou personalizações para emacs ou vi.

Só vou falar sobre o modelo do Emacs porque entendo melhor. O modelo comum para edição de texto hoje envolve um buffer de texto, no qual o texto pode ser inserido, excluído, selecionado e cortado / copiado / colado na área de transferência do sistema.

Os buffers do Emacs, é claro, podem suportar essas operações. Junto com o rastreamento da posição do cursor para cada janela em que estão visíveis, eles também controlam as "marcas" feitas nelas. O texto entre o "ponto" (posição do cursor) e a "marca" é chamado de "região" e corresponde aproximadamente à seleção nos editores convencionais.

A diferença é que o Emacs mantém registro dos últimos vários locais onde a marca foi colocada no anel da marca, e você pode retornar a eles pressionando uma tecla (ou dois, dependendo da sua configuração). Acho isso extremamente útil, especialmente porque muitos comandos do Emacs que mudam sua localização no buffer definem a marca em sua localização anterior. Um exemplo é quando estou editando um módulo Python e preciso adicionar uma instrução de importação ao início do arquivo. O pressionamento de tecla para ir para o topo do buffer (Alt- <) define a marca. Eu adiciono a declaração de importação. Eu pressiono Ctrl-u Ctrl-Espaço e estou de volta ao ponto de partida. Posso continuar fazendo isso para voltar às posições anteriores também. (Talvez eu precise selecionar algum texto ao adicionar a declaração de importação.)

A outra (e mais conhecida) diferença do Emacs é o anel de destruição. A maioria das teclas para remover o texto do buffer salvam o texto no kill ring, que pode então ser recuperado com o comando "yank" (Ctrl-y). O recurso essencial é que os comandos de puxar subseqüentes recuperam o texto morto mais antigo. Assim, você pode eliminar várias seções de texto em uma linha e recuperá-las em ordem. Você também pode percorrer o anel de morte com Alt-y após um puxão, removendo o texto recuperado e inserindo a próxima entrada no anel.

O Emacs tinha esses recursos em 1978. O único outro sistema importante a adotá-los é o NeXTStep (agora herdado do Cocoa). Outras ferramentas fornecem mais recursos para tarefas específicas, podem ser estendidas em linguagens mais fáceis de usar do que o Emacs Lisp, e têm interfaces visuais mais agradáveis ​​... mas o Emacs continua melhor na edição de texto. É por isso que, depois de saber como usá-lo, é tão difícil desistir.

Allen
fonte
Sem dúvida, o emacs pode ser uma opção viável para muitos, já que existem tantos usuários. Mas quanto tempo preciso para me sentir confortável? Na minha experiência, sou um digitador muito rápido e posso usar o touchpad do macbook pro muito bem usando um editor de texto gui como o textmate. Eu nunca poderia me acostumar com o emacs com todas as ligações. Doeu minhas mãos após cerca de um mês de uso; No geral, não tenho certeza se o emacs me torna mais rápido. O sistema de apontamento do mac é muito preciso e rápido, e esses editores de texto GUI embutidos têm uma tonelada de teclas de atalho que podem fazer muito. Eu coloquei muito tempo e nenhum ganho foi visto ainda.
user798719
13

Esta não é exatamente uma tarefa específica, mas para pessoas que podem estar sofrendo de LER, o fato de suas mãos nunca deixarem o teclado no vim é quase impagável. Na verdade, acabei ficando com a esquerda do mouse no trabalho, porque me permitiu mover menos minha mão para alcançar o mouse (meu teclado em casa não tem um teclado numérico, então posso mantê-lo à direita).

Um outro pequeno benefício foi que, IIRC, o vi original foi projetado para acelerar a edição de arquivos em uma conexão remota terrivelmente lenta. Concedido, isso não acontece tanto hoje, mas se você tem uma conexão lenta, boa sorte executando um editor de texto gui e tendo ele respondendo.

Mark Rushakoff
fonte
2
Se você tiver uma conexão lenta, sugiro o uso de Emacs e Tramp.
John Smith
1
Edite as alterações no sftp, sincronize ao salvar.
Roman A. Taycher
@Roman: Usar Emacs e Tramp basicamente faz isso (mais ou menos) sem nenhum esforço adicional - no máximo, você tem que digitar sua senha uma ou duas vezes. Depois disso, a edição do arquivo remoto funciona da mesma forma que editar um local, e salvar envia as alterações para o computador remoto automaticamente.
Tikhon Jelvis
13

Para mim, as grandes coisas de produtividade são

  • Posso fazer praticamente tudo com o teclado.
  • Macros poderosas.
  • Em minha carreira de 20 anos usando 9 sistemas operacionais, as ligações básicas do teclado não mudaram. Posso entrar em praticamente qualquer sistema e já sei como lidar com o editor.
  • Praticamente qualquer recurso que você queira em um editor de texto já foi adicionado.
TED
fonte
11

Uma coisa que eu realmente gosto no vim é o comando "repetidor". Basicamente, ao pressionar .no modo de comando, ele repete sua última ação. Este é apenas um exemplo de recursos realmente interessantes que os "editores de texto para programadores" têm e que muitas vezes as GUIs não têm.

thebrokencube
fonte
Oh sim! esse é um dos comandos mais doces! Não consigo codificar sem :-)
Jay Atkinson
8

Na minha experiência, os principais ganhos de produtividade que o vim e o emacs (também sou uma pessoa vim, mas o emacs certamente é semelhante) proporcionam:

  • Você pode ter esses recursos que os IDEs modernos fornecem (como ciclos de edição-compilação-execução de uma tecla pressionada e documentação embutida e conclusão de tabulação e outros enfeites), mas não é necessário . O ganho de produtividade? Você vê apenas o que deseja ver. Na minha experiência, os IDEs não tornam as pessoas mais produtivas, também porque mostram muitas informações (todos os tipos de navegadores). Este "bit extra de poder, quando você precisar - mas não antes" é um ganho de produtividade IMHO.

  • Os editores são muito populares entre os programadores, o que significa que existem enormes repositórios de scripts, livros e grupos de usuários disponíveis.

  • Na minha experiência (só posso falar pelo vim aqui), o usuário médio do vim é um engenheiro de software bastante bom. Eu não sei por que (ou talvez eu tenha apenas sorte), mas talvez as pessoas que ultrapassaram a barreira de se acostumar com uma ferramenta 'velha' como emacs ou vim tenham a dedicação certa (e contato com outras pessoas como essa ) Talvez seja um efeito indireto desses editores, mas sair com outras pessoas do vim (ou emacs), por exemplo, IRC acabou sendo bastante interessante, já que as mesmas pessoas também estavam bastante interessadas em todos os tipos de problemas de engenharia de software (ou ciência da computação) . Esses editores parecem atrair um certo tipo de personalidade. :-)

Frerich Raabe
fonte
7

O "ganho de produtividade" que recebo por usar um clone leve do emacs para programas minúsculos é que ele inicia como um relâmpago lubrificado. Normalmente consigo fazer um programa de teste rápido em C # antes que o Visual Studio termine de carregar uma solução de "área restrita".

Claro, eu poderia apenas deixar o Visual Studio aberto (ou outro VS aberto, se eu estiver trabalhando nele no momento), mas ele seria trocado se eu o deixasse inativo por um tempo, etc.

Para qualquer coisa de qualquer tamanho significativo - ou se eu não souber a API que estou usando muito bem - um IDE é o caminho a seguir, IMO.

Jon Skeet
fonte
6
Execute o emacs no modo daemon e o "tempo de inicialização" é trivial.
aehlke
6

Eu uso o gvim para windows, então tecnicamente é um editor de texto GUI, mas é vim ..

Para melhorias de produtividade, eu acho:

  1. Nunca preciso usar o mouse, portanto sou mais rápido.
  2. pesquisar, substituir, copiar / colar etc. são todos mais rápidos com atalhos de teclado do vim em vez de movimentos do mouse (uma vez que a curva de aprendizado foi superada)
  3. Conforme mencionado nos comentários anteriores, RSI's são reduzidos significativamente. Meus pulsos me agradecem desde que mudei para o vim.
  4. é leve e rápido
codefly
fonte
4

Você sabe, para o vi eu acho que se trata de ter um modo de inserção e comando. Embora possa parecer um retrocesso a uma época em que você não podia depender do cursor ou das teclas especiais, o que realmente significa é que muitos comandos poderosos de movimento e manipulação de texto são um número mínimo de pressionamentos de tecla. A codificação produtiva não se trata de entrada de texto em massa (o padrão nos editores "modernos"), mas de uma explosão de texto em massa seguida por pequenos ajustes consideráveis ​​e períodos ainda maiores de navegação.

Isso veio à tona para mim, pessoalmente, usando o vi em uma rede de campus de alta latência. Você pode facilmente obter 10 ou 15 caracteres antes da resposta. Com o vi eu poderia prever confortavelmente onde esses comandos me deixariam e ser capaz de trabalhar perto da velocidade normal. Essa experiência distorcida é um benefício contínuo em condições normais - menos capacidade intelectual visual dedicada ao feedback gráfico constante.

Os aceleradores de busca de palavras comuns * e # são ótimos para folhear o código. E% para combinar parênteses é extremamente útil. Claro, dificilmente parece muito em comparação com ctl-], mas metade dos toques no teclado somam.

Pessoalmente, eu uso o winvi, que adiciona algumas coisas importantes que tenho certeza que o vim também tem. Um salto rápido para o modo hexadecimal soluciona muitos problemas de texto do tipo "o que diabos está acontecendo". E o tratamento completamente flexível de finais de linha é uma dádiva de Deus que se tornou um recurso esperado para um editor de texto. Finalmente, ele pode abrir qualquer arquivo, independentemente do conteúdo. Isso equivale a uma habilidade de hacking de elite de primeira ordem.

No Unix, você pode capturar rapidamente a saída do programa ou até mesmo filtrar seções de seu arquivo por meio de comandos externos. Uma função extremamente poderosa, mas acho que subutilizada.

George Phillips
fonte
3

Eu uso o Vim com bastante frequência. Ele não substitui o UltraEdit para mim. Uma vez que muitos aspectos positivos foram listados, acho que vou contra a corrente e listarei alguns aborrecimentos com o Vim.

  • Tratamento de FTP fraco. Eu "classifico" muitos sites, e não ser capaz de navegar facilmente e editar arquivos em um servidor FTP remoto é uma grande deficiência para mim. NWRead não é bom o suficiente.
  • Estranheza do console herdada dos problemas gerais do terminal que parecem atormentar o Linux. Eu normalmente uso PuTTY para me conectar à minha máquina Linux (rodando Ubuntu) e, por algum motivo, as teclas de seta mapeiam para A / B / C / D no modo de inserção (e todos os problemas de suporte a cores). No gVim, ctrl-tab pode ser mapeado para "bn" facilmente, mas não no modo console, esses problemas são abundantes.
  • As opções de pesquisa / substituição são muito fracas, em termos de interface. Ter que digitar tudo em uma única linha não é bom o suficiente. Acho que o diálogo muito mais elaborado em digamos que o UltraEdit me dá muito mais poder no final, mesmo que o suporte de expressão regular real possa ser muito mais fraco.
  • Dependência muito forte dos layouts de teclado dos EUA. Muitas teclas que são usadas para funções primárias, como `, não são impressas no meu layout de teclado dinamarquês (e estão localizadas de maneira incorreta, o mesmo com $ e muitos outros). Torna bastante difícil usar algumas funções.
Svend
fonte
Para o problema # 2, instale "vim" ou "vim-full" para se livrar disso.
Adam Plumb
O problema está em outro lugar, infelizmente. Você pode ver algumas correções sugeridas aqui vim.wikia.com/wiki/… Mas, infelizmente, nenhuma delas funcionou para mim.
Svend
Em relação ao número 3, use ctrl-f depois de: para obter uma janela de edição totalmente funcional para seus comandos: s etc
ErichBSchulz
greplace é uma solução para o # 3. Existem outros plug-ins grep, mas é tudo o que eu preciso. Torna a localização / substituição mais fácil do que em qualquer outro IDE ou editor de texto que usei.
domi91c
2

A Área de Trabalho Remota mostra rapidamente apenas aplicativos nativos do Windows. Tentamos usar o Eclipse para desenvolver em Unix. E sabe de uma coisa? Nem foi possível.

A segunda razão é que poderíamos estender nosso Vims e Emacs para fazer todas as tarefas específicas do projeto de navegação no banco de dados de uma maneira especial para destacar e completar automaticamente nossa própria meta linguagem.

Mykola Golubyev
fonte
2

Eu diria que uma das grandes vantagens é a extensibilidade do editor vim. Se eu quiser que algo funcione com o CVS, posso pegar o plugin CVSMenu e adicioná-lo ao meu editor para obter essa funcionalidade.

O mesmo ocorre com o realce de sintaxe, comportamento com arquivos específicos, etc. Todos os tipos de coisas podem ser ajustados no vim.

Não tenho tanta certeza se você pode fazer isso tão facilmente em editores de tipo GUI.

Rob Wells
fonte
1

Gravar e reproduzir no VIM é incomparavelmente incrível, o que você dificilmente encontrará em ferramentas baseadas em GUI.

Além disso, o incremento / decremento automático fornece recursos de geração de dados sem escrever programas para ele.

peeyush
fonte
1

Eu fui um usuário desleixado do Emacs por anos. Mas nunca realmente entrei nisso. Então comecei a aprender Clojure (meu primeiro Lisp) e descobri ParEdit.

E isso explodiu minha mente.

(Veja aqui alguns exemplos: https://www.youtube.com/watch?v=D6h5dFyyUX0 )

Lisp + ParEdit é a experiência de edição mais incrível que já tive. Nada mais chega perto. Lisp não é mais uma linguagem difícil de escrever, obrigando-me a me preocupar em equilibrar muitos parênteses bobos irritantes. Com ParEdit, a estrutura Lisp consistente torna-se um grande bônus para trabalhar, já que as mesmas transformações de árvore - sorver, vomitar, dividir e juntar - funcionam em qualquer lugar, em estruturas de controle e estruturas de dados semelhantes. E ParEdit me impede de cometer erros estúpidos. É quase impossível cometer erros de sintaxe.

E, ao contrário do Eclipse, esta não é uma verificação laboriosa em tempo real que está sempre sendo executada em segundo plano, queimando meu processador. Não custa nada ... ParEdit simplesmente faz a mudança estrutural correta quando eu peço.

(Em geral, o Emacs é tão rápido quanto precisa ser. Ao contrário do Eclipse, que é como digitar na cola.)

A próxima coisa que descobri foi o Yasnippet ( http://emacswiki.org/emacs/Yasnippet ). Mais uma vez, eu nunca usei nada parecido com isso antes. Não apenas uma macro para adicionar clichê, mas um formulário dinâmico e navegável.

O prazer final é a constatação de que, se eu quiser estender isso sozinho, para ter mais dessas ferramentas de produtividade de alto nível, tenho o poder do próprio Lisp para trabalhar.

interstar
fonte
1

(Minha experiência é de alguns anos com Visual Studio e outros IDEs, depois 15 anos de Vim, e os últimos 6 meses com Emacs.)

Longevidade - Vim / Emacs são FOSS e existem há décadas. Seu uso não vai diminuir, nem seus recursos vão quebrar / desaparecer / mudar muito, então você pode confiar na construção de toda a sua caixa de ferramentas de carreira em torno do domínio de apenas um editor.

Acesso remoto / ubíquo em terminais - Embora ambos tenham sistemas excelentes para editar arquivos remotos, você também pode instalá-los em qualquer sistema em que tenha feito login.

Desenvolvimento orientado por REPL - Ambos têm modos "SLIME" em várias formas que integram qualquer tipo de REPL com o qual você está trabalhando. Por exemplo, nunca encontrei um desenvolvimento iterativo tão poderoso quanto o fornecido pelo CIDER .

Linting - Qualquer linguagem que você esteja usando provavelmente tem algumas ferramentas de linting , sejam integradas ao compilador ou uma ferramenta externa. Eles se integram perfeitamente ao Emacs / Vim, mostrando seus erros de codificação quase em tempo real.

Gramática de comandos mnemônicos - embora ambos levem algum tempo para serem aprendidos, esses editores apresentam sistemas famosos e inteligentes para acessar - e até mesmo lembrar - milhares de comandos com apenas algumas teclas e combinações de teclas. Isso pode eliminar totalmente qualquer necessidade de usar um mouse, se você quiser.

Sistemas de ajuda integrados - a documentação off-line de muitas linguagens e suas APIs é comum encontrar incorporada a esses editores e pode ser acessada de maneiras simples semelhantes aos sistemas de ajuda vastos e abrangentes que eles apresentam. O preenchimento automático foi adicionado para a maioria dos idiomas comuns. Além disso, há uma abundância de ajuda para discussão sobre praticamente qualquer tópico de ajuda.

Navegação - tags, paredit-likes, marks, windowing, tabs, vim-rails ' jumping e muitos mais embutidos.

Gerenciadores de pacotes / repositórios - Emacs tem alguns (elpa, melpa, marmalade) e Vim's também são bons (vundle, pathogen, etc ). Não conheço nenhuma comunidade em torno de IDEs que ofereça algo comparável a estes. Vejo mais de 5.000 pacotes com package-list-packages.

Além de apenas editar - o Emacs vai mais longe aqui com a capacidade de ler notícias, navegar na web, gerenciar e-mail, editar planilhas, criar apresentações e organizar qualquer coisa.

Todo o resto integrado - depuradores, sincronização de navegador, compilação, shells, execução de teste.

Infinitamente personalizável - Elisp é uma linguagem muito poderosa para estender / modificar Emacs. VimL é o equivalente do Vim. Existem livros escritos sobre ambos. Ajuste os temas e comportamentos de cores para seu deleite!

Micah Elliott
fonte
0

Uma vantagem que todos os editores baseados em console têm sobre os editores GUI é que eles podem ser executados em um multiplexador de terminal, como screen ou tmux . Por que isso é bom?

  • É mais rápido alternar de um console multiplexador de terminal para outro do que alternar de um console GUI para outro usando o mouse, ou mesmo usando alt-tab. Isso ocorre porque os consoles podem ser nomeados e alternados digitando alguns caracteres do nome.
  • Se suas sessões de editor estiverem em um console do multiplexador de terminal, você poderá acessá-las de qualquer máquina. Se eu precisar fazer algum trabalho de casa, posso ssh na minha caixa, conectar o multiplexador de terminal já em execução à minha sessão ssh e estar exatamente onde parei quando saí do trabalho.
Wayne Conrad
fonte
0

Como vim / emacs são frequentemente usados ​​por programadores e como usuário C # desde 2003, a partir desse viés pov é justo fazer esta comparação de outra forma injusta (outra poderia ser VS C ++ com Visual Assist X vs C ++ em vim / emacs):

Para C # e Visual Studio:

  1. Acabei de contar a quantidade de pressionamentos de tecla para esta linha:

        public List<string> Names = new List<string>();
    //  3      3    3      1111111111111            211   =3+3+3+8+5+2+1+1 = 26 keys strokes + 3 uses of Shift while typing the line above in VS C# 2013 vs 47 key strokes for non-IntelliSense IDE's
    //                              (IntelliSense offers the List<string> because that's what you're likely after here but you can type something else if you want)
    // https://channel9.msdn.com/Blogs/Seth-Juarez/Anders-Hejlsberg-on-Modern-Compiler-Construction explains on how this is impl. for C#. In C++ I've heard of 3rd party VS plugin that improves or replaces the VS C++ auto-complete
  2. Eu li sobre o recurso emacs para pular no código. Não acho que tenha exatamente esse recurso. No entanto, tem uma característica semelhante. Aqui está a desvantagem do VS. Existem muitos pequenos recursos, mas com o tempo eles param de funcionar. A última vez que verifiquei, o recurso de salto não funcionou, mas isso foi há alguns anos. O VS introduziu um novo recurso de salto gráfico que estou usando. Requer mouse ou toque.

  3. É aqui que o emacs / vi ganha. Se você tiver que pular muito no código, os recursos do VS para isso não existem ou não foram testados o suficiente.

O problema com a navegação GUI baseada no mouse é que

a) assim como sentar em uma posição muito estática pode ser ruim; nesse caso, os ratos tendem a fazer seus dedos também ficarem em uma posição estática. Minha dor no pulso foi embora com a mudança para trackball. Tentei primeiro o mouse vertical, mas não resolveu o problema.

b) Meu teclado ideal teria 2 fileiras de teclas de função, sem teclado numérico, então eu poderia colocar o trackball mais perto, tornando a distância de salto mais suportável.

No final das contas, no entanto, se você quiser pular entre alguns lugares específicos, está claro que o "anel de marca" é mais eficaz. VS tem algo nesse sentido ... da última vez que usei, ele simplesmente não funcionava de forma confiável ...

c) e provavelmente há uma tonelada de pequenos recursos que quebram com cada versão, então essa é a desvantagem do VS.

Solução para este problema de "código fechado": Escreva todo o VS em C # e depois permita modificar / editar o código compilado (em tempo de execução, salvando as alterações como patch que é opcionalmente carregado na próxima inicialização) sem liberar o código-fonte. Isso pode ser feito fazendo com que o descompilador exiba o código como era antes. 180 graus de como os compiladores nativos funcionam. O binário então se torna o código-fonte e o executável em vez dessa confusão de arquivos .cs e arquivos .exe etc. Existem ferramentas de terceiros que quase já podem fazer isso, então "modificar" exe C # é bastante trivial, mas proponho levar isso para a conclusão lógica: incluir até comentários em .exe e .dll. Os arquivos ainda serão minúsculos em comparação com os aplicativos C / C ++ compilados. Otimização? Você também pode incluir código pré-otimizado. Quando o modder modifica o exe enquanto o aplicativo está em execução, o "AST" não modificado e o binário otimizado que o acompanha são plugados de volta. Mesma ideia do compilador C #, mas levada adiante. Próxima etapa: Escreva o sistema operacional inteiro nesta linguagem, de forma que, mesmo quando o Windows é um código-fonte fechado, possa ser modificado trivialmente, já que o código-fonte vem com cada binário. Sem configurar ambientes, compilar, vincular. Basta modificar o sistema operacional enquanto ele está em execução. Fechar analogia: se você escreveu um navegador da web em Common Lisp, pode editar o navegador da web sem interrompê-lo e construir páginas da web no mesmo idioma do navegador. ele pode ser trivialmente modificado, pois o código-fonte vem com cada binário. Sem configurar ambientes, compilar, vincular. Basta modificar o sistema operacional enquanto ele está em execução. Fechar analogia: se você escreveu um navegador da web em Common Lisp, pode editar o navegador da web sem interrompê-lo e construir páginas da web no mesmo idioma do navegador. ele pode ser trivialmente modificado, pois o código-fonte vem com cada binário. Sem configurar ambientes, compilar, vincular. Basta modificar o sistema operacional enquanto ele está em execução. Fechar analogia: se você escreveu um navegador da web em Common Lisp, pode editar o navegador da web sem interrompê-lo e construir páginas da web no mesmo idioma do navegador.

Covarde anônimo
fonte