Usando o Vim ao codificar um aplicativo em larga escala

17

Estou começando a aprender o Vim e seguindo alguns dos conselhos dados aqui na stackexchange. Estou começando a usá-lo em alguns projetos de brinquedos e sou legal com isso.
Mas comecei a pensar em como você pode ser produtivo sem abrir outros arquivos o tempo todo, apenas para saber como está o nome dessa classe, qual é a macro incluída em outro arquivo etc. etc.

Quais são os conselhos comuns que você pode dar?

Matias
fonte
1
Definitivamente, você precisará adicionar alguns scripts do Vim para ajudar. Eu uso o Vim para programar muito e sempre uso ctags para me ajudar a navegar pelo código-fonte. Qual idioma está usando?
tehnyit

Respostas:

10

Um aspecto de programadores experientes que passam de um IDE para um ambiente de console / xterm é encontrar um substituto para a indexação de objetos de código-fonte (nomes de funções, variáveis). Acredito que o termo geral usado para o Visual Studio da Microsoft seja Intellisense ou algo parecido.

No mundo Unix / Linux, como o vim, uma ferramenta usada se ctagsou na popular implementação de código aberto de múltiplos idiomas, ctags exuberantes . Não é vimespecífico e é suportado por vários editores de texto Unix, Linux, MS Windows, Mac OS, incluindo Emacs, CRiSP, vile e vários outros vi clones, nedit, gedit, JED, UltraEdit, BBEdit e DreamWeaver (alguns deles são via plugins de terceiros).

Além disso, um bom design e uma decomposição cuidadosa, a organização de projetos maiores torna o projeto gerenciável, pois existem apenas 1-2 possíveis locais óbvios para procurar qualquer bit de informação ( typedefou classdefinições, etc.).

Também uso várias instâncias do vim (geralmente via viewpara visualização somente leitura de arquivos de origem), bem como um uso limitado de vários buffers de edição por instância do vim (principalmente para mover ou refatorar o código entre arquivos). Acho que o uso de apenas alguns arquivos de origem abertos por vez pode ajudar de maneira pequena, para me manter focado na tarefa em mãos.

mctylr
fonte
1
+1 por sugerir ctags exuberantes !
Attila O.
1
Acho que apenas ser organizado ajuda muito. Se você pode ver um artefato na fonte e dizer "Ah, isso deve ser definido neste local", as coisas ficam muito mais simples. No lado positivo, iniciar as sessões do vim é tão rápido que ter meia dúzia aberta ao mesmo tempo se torna uma coisa bastante normal
Zachary K
@ZacharyK Meia dúzia? Eu costumo ter uma dúzia cheia até o final do dia
Izkata
depende do dia
Zachary K
7

Não pretendo fazer parte do debate VIM vs. IDE. Eu acho que é pref pessoal. Mas eu uso muito o VIM e aqui está o porquê de eu ser muito poderoso usar o vim

Duas partes da resposta:

R. A maioria das coisas que o VIM permite tudo que você pode fazer com IDEs (não estou tentando colocar todos os recursos, mas apenas alguns não-óbvios que fazem o vi parecer limitador)

  1. você pode percorrer os protótipos se tiver ctagsativado e fizerctrl+{

  2. Você pode abrir várias janelas simultaneamente, cantar: sp 'filename' comando. É claro que em algum momento eu abro vários terminais para facilitar a vida.

  3. Destaque poderoso da sintaxe. Padrão, assim como outras coisas. Além disso, ao contrário de alguns IDEs, se houver uma incompatibilidade de chaves abertas, cadeia ou não coincidir com chaves fechadas, fornece uma indicação muito clara. É para a maioria dos idiomas, e não específico.

  4. Você pode executar a linha de comando usando o comando ":!make"sem sair da janela.

  5. Percorra muito mais rápido com base em palavras, com base em pesquisa (vi suporta regexp se você estiver disponível) e você pode percorrer { to } usandoESC %

  6. É possível trabalhar no GDB durante a depuração de etapas e mantendo o vi (em outra janela para trabalhar no código). Quando você decide alterar o arquivo, pode fazê-lo novamente e recarregá-lo no GDB.

B. Muitas coisas que você acha melhor no VIM

  1. Pesquisa e substituição são definitivamente muito mais poderosas.

  2. Você pode criar sua aparência personalizada e (preto + verde em vez de branco + azul) e, mais importante, seu próprio comando poderoso.

  3. Seleção de bloco vertical. Tente ctrl+vmover o cursor verticalmente. Este é realmente um recurso inimaginável!

  4. Parece estranho - mas tente cortar / copiar um bloco e ter que ultrapassá-lo 30 vezes! Não é preciso mais esforço do que fazê-lo uma vez. Além disso, tente refazer (não desfazer) uma atividade uma ou várias vezes.

  5. Recuo automático, controle de guia e maneira automatizada de converter seus comentários em bloco de comentários ou comentários de estilo específico.

  6. Confusão de mesclagem eficaz com vimdiff.

  7. O mais importante no ambiente de trabalho baseado em console é que você nunca toca no MOUSE! portanto, se você é rápido no teclado, os IDE não são bons.

  8. Trabalhe em várias máquinas, servidores simultaneamente! Não parece óbvio, mas às vezes, quando você trabalha no servidor, efetua login diretamente em várias máquinas e faz as coisas.

Responderá sobre como fazer no vi se esses recursos estiverem em demandas sérias. Veja este site Vimcast . claro, existem muitos.

Mas sim, a maioria das coisas baseadas em console é antiquada, e de maneira alguma estou dizendo algo contra IDEs.

Dipan Mehta
fonte
Nota: o vim possui um :makecomando embutido, você nem precisa do !(que, para quem não usa o vim, executa um comando no terminal). Acabei de encontrá-lo ctrl-vhá algumas semanas e agora o uso constantemente, é incrivelmente útil.
Kevin
@ Kevin - ok eu não sabia sobre <code>: make </code>! Foi emocionante saber disso. Esse é um tipo de romance que você obtém com o VIM - nunca é possível fazer uma lista completa de recursos que o VIM pode permitir! Sempre te surpreende. Obrigado.
Dipan Mehta 11/11
Sim, é ótimo assim. A vantagem :makedisso é que ele o move automaticamente para o primeiro erro, e você pode navegá-los com cne cp, consulte :help make. Na verdade, eu não percebi isso até procurar; Eu costumo criar em uma janela diferente e em pwd, parece que você precisa estar no mesmo que o Makefile, embora você possa colocar um no diretório src apenas para mover para a raiz e fazer lá.
Kevin
4

Na minha opinião, o Vim oferece um editor muito forte com recursos básicos, mas cabe a você incrementar os scripts / addons que você provavelmente usará em seus projetos. Provavelmente, eles serão diferentes, dependendo de você editar principalmente scripts, documentação ou arquivos que precisam ser compilados.

Como exemplo, eu uso zencodingpara a edição de html / css ocasional, snipmatepara Textmate-like trechos, e um par de add-ons python-relacionada ( pyflakes, pep8, vimpdb, etc.) para Python de codificação, que é o que eu faço na maioria das vezes.

Existem outros addons que eu não uso com frequência, mas ainda os acho úteis de vez em quando, como Dpastee ConqueTerm.

Ainda assim, para mim, os recursos mais úteis do Vim são integrados (desfazer com base no tempo, navegação rápida, filtros de intervalo etc.) - coisas que não consegui encontrar (ou pelo menos não são tão fáceis de acessar) ) nos IDEs. Portanto, depois de configurar seu Vim para ter os bits e partes de um IDE que você realmente precisa ( snipmate, ctags...), você poderá obter o benefício dos ambientes de IDE e de console.

Meu uso do Vim é somente para console, então não posso dizer o quão útil essas ferramentas são com o Gvim.

Apesar de toda a bondade dos addons, no entanto, ainda me vejo correndo !grep ...ou de ^Z + find ...vez em quando.

Attila O.
fonte
3

Eu faço toda a minha programação no vim. Na verdade, acho mais fácil do que qualquer IDE que usei. Você pode abrir vários arquivos ao mesmo tempo, mesmo na mesma tela (procure guias e janelas). Normalmente, estou trabalhando no X, por isso tenho várias (6) telas xterm abertas: uma para arquivos c no vim (várias guias), outra para cabeçalhos no vim (também guias) e janelas que não são do vim: build, debug , configuração, etc. Mesmo quando estou em um console puro, posso usar guias, janelas e dobra de código para ver o que preciso, criar, e até visualizar páginas de manual sem sair do vim, você só precisa conhecer o comandos certos. E há tantos, tenho certeza que nem sequer dominei metade deles. E é difícil superar a pesquisa e a substituição do vim.

Kevin
fonte
1

Muitas aplicações em larga escala foram (minhas, pelo menos, duas;), e meu palpite é que muitas outras serão escritas completamente no Vim. Os IDEs ainda são uma inovação bastante moderna , por assim dizer.

No entanto, vanilla simples vi (ai) ou Vim são um pouco ausentes. Conhecer o Vim e pensar de algumas maneiras ajuda um pouco, e os plug - ins ajudam muito , para os quais www.vim.org é uma fonte inesgotável de. Alguns específicos para o idioma que você está usando e outros gerais (para comentar, para navegar em arquivos, para ...) o transformam rapidamente em um ambiente de desenvolvimento muito rápido. Afinal (e alguns certamente argumentarão), um IDE é apenas um editor com plugins compactados em uma interface melhor. Também não há muita coisa gráfica em um IDE.

Torre
fonte