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?
utilities
programming
vim
Louis Salin
fonte
fonte
Respostas:
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:
ou o número de palavras:
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: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
par
executando o comando:fonte
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.
fonte
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-TAlé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.
fonte
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
command-t Isso facilita a navegação nos arquivos e é muito inteligente .
fuzzyfinder Eu uso isso principalmente para obter buffers e alterar o diretório atual.
NERDTree Este é o melhor plugin de navegador de arquivos para o vim.
XPTemplate O melhor plugin de templates do mundo.
rails.vim Se você faz coisas sobre o Rails dev, isso é indispensável.
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
fonte
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á.
fonte
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
fonte
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.
fonte
Normalmente, organizo uma
screen
sessã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 precisascreen
fazer isso; você poderia fazer isso com diferentes janelas de terminal ou com guias em um terminal com várias guias. Acho que souscreen
mais estável do que outras alternativas: se o aplicativo do terminal travar, basta iniciar outro terminal e reconectar-se à suascreen
sessão ainda em execução .screen
també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 about
tela.'
) 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,u
para desfazer e pressione:r
a 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.,
:make
será feita uma compilação, e o suporte para a lista de correções rápidas está bem estabelecido. Então você pode fazer:copen
para 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
:lmake
organizar 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.:lopen
abrirá uma lista de locais para a janela atual.fonte