Quais são as melhores ferramentas de programação de uso geral para complementar o Vim? [fechadas]

22

Estou usando o Vim como meu editor de texto há um tempo e sinto que estou fazendo um longo caminho para fazer qualquer coisa. Uso ctags para marcar minha base de código para navegação e uso grep (embora ineficientemente) para descobrir onde certos métodos são usados. Mas tenho a sensação de que existem algumas ferramentas muito úteis por aí que eu não conheço que poderiam me tornar mais produtivo.

Qual é a melhor pilha de software que eu poderia usar para programação geral que complementaria o Vim? Como você navega em uma base de código, executa make, envia alterações para o seu sistema de controle de origem, etc? Você tem um segundo console aberto ao lado do Vim?

Louis Salin
fonte
2
Vim em si. Talvez você não esteja usando os plugins / scripts corretos para o trabalho. Depende do tipo de programação que você está fazendo, qual idioma, que outras ferramentas você precisa e assim por diante.
Bitek
Não estou especificando nenhum idioma para não influenciar as respostas que receberei. Eu realmente não estou procurando por plugins Vim, embora sejam úteis.
Louis Salin
Achei esta apresentação muito útil: zmievski.org/2010/06/vim-for-programmers-on-slideshare
gabe.
Eu fiz disso um wiki da comunidade. Percebi que não há uma melhor resposta para minha pergunta. Obrigado a todos por suas respostas!
Louis Salin

Respostas:

8

Um ótimo recurso do vim é a facilidade de integração com os comandos do shell existentes. Algumas das ferramentas externas mais úteis são as incluídas no coreutils e outras ferramentas simples de manipulação de texto. Por exemplo, podemos obter o número de linhas em um arquivo com:

:! wc -l %

ou o número de palavras:

:! wc -w %

Qualquer comando que funcione no shell funcionará aqui. Isso pode ser combinado com o comando :read( :r) para colocar a saída do comando no arquivo. Por exemplo:

:r !wc -l %

Colocará a contagem de linhas de palavras no arquivo que você está editando.

Outra vantagem disso é substituir o texto que você está editando atualmente pela saída de um desses comandos. Por exemplo, você pode formatar o arquivo inteiro parexecutando o comando:

:% !par
xoebus
fonte
5

Acho o NERDtree indispensável para navegar pela minha base de código. Além disso, vale a pena investir algum tempo para tornar-se proficiente na movimentação de seus buffers / janelas.

aryeh
fonte
+1 para a referência a este fantástico plugin. ( github.com/scrooloose/nerdtree )
noffle 18/10/11
4

Seja qual for o seu idioma, você desejará usar um recurso chamado ctags que permite navegar pelas definições de origem. Isso requer uma ferramenta externa para gerar arquivos TAGS usados ​​pelo VIM para descobrir os locais de várias definições de código em um projeto.

Obtenha a ferramenta ctags exuberante , ela funciona em muitos idiomas e é simples de usar.

do VIM :help ctags

ctags criará um índice de todos os identificadores em uma árvore de origem. Você pode usar os comandos tag para navegar pela árvore de fontes. veja :help tag-commands. O mais fácil é colocar o cursor sobre uma palavra-chave e pressionar CTRL- ]. Para voltar para onde você veio, pressione CTRL-T

Além disso, você pode querer olhar para algumas dicas e melhorias do VIM discutidas aqui . É uma discussão muito abrangente de algumas das coisas que podem ser feitas para melhorar a experiência de um vimmer.

chillitom
fonte
Eu mencionei na minha pergunta que estava usando ctags, mas obrigado pela resposta de qualquer maneira! :)
Louis Salin
4

O Vim é uma ferramenta muito poderosa, tenho certeza que todos vocês já sabem disso. Você começará a obter um aumento de produtividade usando o vim dentro de algumas semanas. Mas você nunca saturará seu conhecimento do Vim. Portanto, estou sempre procurando maneiras novas e eficientes de fazer as coisas no Vim. Há um cara chamado Derek Wyatt que fez ótimos screencasts sobre o uso do Vim e também sobre os plugins que ele usa.

Alguns dos plugins que eu uso

  1. command-t Isso facilita a navegação nos arquivos e é muito inteligente .

    O plug-in Command-T fornece um mecanismo intuitivo e extremamente rápido para abrir arquivos com um número mínimo de pressionamentos de tecla. É chamado de "Command-T" porque é inspirado na janela "Ir para o arquivo" vinculada ao Command-T no TextMate.

  2. fuzzyfinder Eu uso isso principalmente para obter buffers e alterar o diretório atual.

    O FuzzyFinder fornece maneiras convenientes de alcançar rapidamente o buffer / arquivo / comando / marcador / tag que você deseja. O FuzzyFinder pesquisa com o padrão difuso / parcial no qual ele converteu um padrão inserido

  3. NERDTree Este é o melhor plugin de navegador de arquivos para o vim.

    A árvore NERD permite que você explore seu sistema de arquivos e abra arquivos e diretórios. Ele apresenta o sistema de arquivos na forma de uma árvore que você manipula com o teclado e / ou o mouse. Também permite executar operações simples do sistema de arquivos.

  4. XPTemplate O melhor plugin de templates do mundo.

    Mecanismo de trechos de código para o Vim, com biblioteca de trechos. O XPTemplate permite escrever códigos de maneira suave, rápida e confortável.

  5. rails.vim Se você faz coisas sobre o Rails dev, isso é indispensável.

    O TextMate pode ser a última moda para o desenvolvimento de aplicativos Ruby on Rails, mas o Vim é para sempre. Este plugin oferece os seguintes recursos para o desenvolvimento de aplicativos Ruby on Rails.

  6. NerdCommenter Torna fácil comentar em qualquer tipo de código.

E esses são apenas alguns dos plugins que eu uso. Para baixar todos os plugins com o meu vimrc, confira meus dotfiles

Khaja Minhajuddin
fonte
3

Existe um ótimo plugin para o VIM que faz a sintaxe da verificação do Syntastic . Existem muitas outras ferramentas disponíveis também para gerenciamento de arquivos, construção, etc. Vá para o IRC #vim em freenode.net, existem muitas pessoas úteis lá.

Kris
fonte
3

meu favorito é cscope. Se você compilou o vim com suporte ao cscope, poderá usar diretamente os comandos cscope do VIM. por exemplo, pesquisando arquivos incluídos, funções chamadas pela função xyz, etc. Eu tentei com um repositório de código fonte muito grande. Isso ajuda muito.

http://cscope.sourceforge.net/cscope_vim_tutorial.html

Hemant
fonte
1

Se você estiver programando em qualquer um dos idiomas suportados pelo GCC (C, C ++, Java, Fortran), o Clewn é um ótimo plug-in que integra o depurador GDB ao VIM. Na verdade, eu acho que é uma das melhores interfaces para o GDB que existe.

chillitom
fonte
0

Normalmente, organizo uma screensessão para cada projeto. O Vim está na janela 0 e eu uso a janela 1 para uma sessão de shell. Se eu estou codificando em uma linguagem que possui um REPL decente, normalmente eu a executo na janela 2. Claro, você não precisa screenfazer isso; você poderia fazer isso com diferentes janelas de terminal ou com guias em um terminal com várias guias. Acho que sou screenmais estável do que outras alternativas: se o aplicativo do terminal travar, basta iniciar outro terminal e reconectar-se à sua screensessão ainda em execução . screentambém é muito rápido para navegar depois que você o aprende (assim como o próprio vim).

Eu geralmente acabo usando a sessão do shell para atividades complicadas de controle de versão, como rebasing ou mesclagem: coisas mais simples podem ser feitas na linha de comando do vim (por exemplo, :!git commit % -m 'Added info abouttela .') ou usando o addon fugitivo . Acho fugitivos :Gmove(renomear o buffer atual tanto no vim quanto no índice git) e :Gdiff(invoco vimdiff no buffer atual com um ponto anterior em sua história) particularmente útil. Você também pode fazer coisas como criar uma mensagem de confirmação em um buffer temporário, copiar texto de várias partes do seu código e confirmar com:%!git commit -F /dev/stdin

Também usarei a sessão do shell para testes funcionais / de integração, se for aplicável ao que estiver trabalhando, por exemplo, se estiver escrevendo um utilitário de linha de comando.

Funcionalidade quickfix do Vim é útil para depurar, embora não parece ser um complemento diferente necessário para cada idioma que você pode querer trabalhar. Eles também parecem usar uma variedade de técnicas de invocação, mapeamento de teclas de função ou seqüências de teclas começando com \ou ,, ou para comandos personalizados, ou sendo chamado automaticamente quando um buffer é salvo. Até agora, eu realmente não me preocupei em esclarecer isso, e apenas li os resultados dos testes de unidade ou fiapos em um buffer temporário usando, por exemplo :r !python -m doctest whatever.py. Modifique o código, volte para o buffer temporário, upara desfazer e pressione :ra seta para cima (na maioria das vezes) para recuperar esse comando. Mas pode valer a pena procurar um complemento para isso, dependendo do idioma em que você trabalha.

Para linguagens compiladas populares como C, java, etc., :makeserá feita uma compilação, e o suporte para a lista de correções rápidas está bem estabelecido. Então você pode fazer :copenpara exibir o buffer do quickfix. Ele mostrará uma lista de erros, um por linha; bater Enterem uma linha irá pular sua outra janela para aquele ponto nesse arquivo.

Se estiver trabalhando com vários projetos ao mesmo tempo, é possível :lmakeorganizar uma lista de erros a serem armazenados na lista de localizações : é como a lista de correções rápidas, mas está associada a uma única janela em vez de ser um singleton dentro de sua lista. instância vim. :lopenabrirá uma lista de locais para a janela atual.

intuído
fonte