Pergunta

Existem plugins ou métodos incorporados no Vim para a realização de refatoração no código C ou C++, algo como a refatoração tools no Eclipse?

Eu estou especialmente interessado em extrair o método de refactoring, a ferramenta a partir do Eclipse, que irá determinar os parâmetros a partir de novos métodos e, normalmente, também acho uma variável para utilizar como valor de retorno.

Foi útil?

Solução

Não, embora o Vim é um bom ambiente para edição, e pode ser personalizado de várias formas, (desdobramento do código, sintaxe coloração, expansão de macro, etc.) a maioria destes são feitas no nível da sintaxe, em vez de a nível semântico.Mesmo o código de dobramento apenas partidas até opondo-chaves.

Para fazer um bom refatoração, você tem que ter um monte de semântica conhecimento sobre a AST, que são variáveis declaradas no escopo que, e assim por diante.IDEs como o Eclipse construir uma cache de variáveis definidas em cada âmbito lexical, de modo que eles podem rapidamente se referir de volta para onde eles são usados em termos de determinar o que para mudar o nome e onde.

Isso não quer dizer que você não pode fazer algumas coisas sintaticamente;depois de tudo, pode-se apenas um bloco de código e coloque-o em uma função separada facilmente o suficiente.Você pode até mesmo ser capaz de adivinhar em alguns parâmetros (por exemplo,encontrar uma lista de variáveis, descobrir quais os que têm declarações local, removê-los e o que resta são seus parâmetros.Mas o Eclipse também faz outras coisas—como descobrir se todas as variáveis são modificadas na função, e assegurar que eles são passados de volta pelo valor de retorno.Ele também verifica quaisquer jogado exceções, e adicioná-los à lista.

O efeito líquido é que, enquanto você pode ser capaz de aproximar alguns desses no Vim, você realmente não vai ser capaz de obter este trabalho em um Vim só ambiente.Você poderia usar um Vim-como como atalho no Eclipse adequada, ou olhar para eclim.A partir da página inicial:

O principal objetivo da eclim é trazer Eclipse funcionalidade para o Vim o editor.O objetivo inicial era fornecer Eclipse java funcionalidade no vim, mas o suporte para vários outros linguagens c/c++, php, python, ruby, css, html, xml, etc.) foram adicionados e vários outros estão sendo planejados.

Eclim é menos de uma aplicação e mais de uma integração de duas grandes projetos.O primeiro, Vim, é, sem dúvida, um dos melhores editores de texto em existência.O segundo, Eclipse, fornece muitas ferramentas excelentes para desenvolvimento em vários idiomas.Cada oferece muitos recursos que podem aumente a produtividade do desenvolvedor, mas ambos ainda deixar algo para ser o desejado.O Vim não possui suporte a Java native e muitas das características avançadas disponível em Eclipse.Eclipse, no de outro lado, ainda requer o uso de o mouse para muitas coisas, e quando comparado com o Vim, proporciona um menor que ideal interface para edição de texto.

Que é onde eclim entra em jogo.Em vez de tentar escrever um IDE em Vim ou um editor Vim no Eclipse, eclim fornece um Eclipse plug-in que expõe Eclipse recursos através de um interface de servidor, e um conjunto de Vim plugins que se comunicam com o Eclipse através dessa interface.

Isto não só dá um Eclipse como ambiente, é Eclipse.Mas você ainda obter a navegação e recursos de edição de texto do vim.Parece que esta possa atender suas necessidades, embora a documentação em refatoração de apoio não indica que ele fornece um extrato método de funcionalidade.

Outras dicas

Eu escrevi um genérico refatoração plugin.C++ é uma das principais linguagens de tratados (como é o meu idioma principal no trabalho).Método de extração é suportado.

Para C++, o plugin é capaz de (graças a ctags) para deduzir a maioria (mas, infelizmente, nem sempre a todos-graças ao ctags...) das variáveis a entrar e a sair da extraídos função.Eu ainda tenho que escrever uma pequena caixa de diálogo para seleccionar a forma como a in/out variáveis devem ser trocados (const ref, rvalue ref, copiar, ponteiro, tuplas, estrutura, e assim por diante) (BTW, a ajuda é bem-vindo como GUIs não são a minha coisa ^^').

Depois de pesquisar alta e baixa, para que vim de refatoração para C++, esta é a melhor solução que eu vim acima com.

  • O Visual Studio 2013 e superior - Excelente IDE para C++ o desenvolvimento e a depuração, mas não tem suficiente refatoração ou vim
  • Instalar o vsvim plugin - Agora, você tem todo o vim navegação, pesquisa de seqüência de caracteres de substituição, etc.(Algumas funcionalidades avançadas não são suportados)
  • Instalar Resharp C++ - Ótimo para refatoração ao custo de velocidade.Isso o torna um pouco estranho, mas se você deseja inferir automaticamente gerar métodos/variáveis, mudar local/global/método de variáveis ou funções de Pesquisa para usos na solução, e mais recursos, torna-se extremamente a pena.

Esta é a melhor combinação que eu encontrei para C++ - desenvolvimento, depuração e refatoração.Faz-me pelo menos 3x - 5x mais rápido.Espero que ajude você também.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top