Domanda

Ci sono plugin o metodi incorporati in Vim per l'esecuzione di refactoring sul codice C o C ++, qualcosa come gli strumenti di refactoring in Eclipse?

Sono particolarmente entusiasta del metodo di strumento estratto refactoring da Eclipse che determinerà i parametri di nuovi metodi e di solito anche indovinare una variabile da utilizzare come valore di ritorno.

È stato utile?

Soluzione

No, anche se Vim è un buon ambiente per l'editing, e può essere personalizzato in molti modi (raggruppamento del codice, la colorazione della sintassi, macro espansione etc.) la maggior parte di questi sono fatti a livello di sintassi, piuttosto che il livello semantico . Anche il codice di piegatura appena corrisponda bretelle opposte.

Per fare un refactoring corretta, è necessario disporre di un sacco di conoscenza semantica circa l'AST, quali variabili sono dichiarate in cui la portata, e così via. IDE come Eclipse costruire una cache delle variabili definite in ogni ambito lessicale, in modo che possano fare riferimento rapidamente indietro al punto in cui essi sono utilizzati in termini di determinazione di ciò che per rinominare e dove.

Questo non vuol dire che non si possono fare alcune cose sintatticamente; dopo tutto, si può solo prendere un blocco di codice e metterlo in una funzione separata abbastanza facilmente. Si potrebbe anche essere in grado di indovinare alcuni parametri (ad esempio, trovare un elenco delle variabili, scoprire quali hanno dichiarazioni locali, rimuoverli e ciò che resta sono i vostri parametri. Ma Eclipse fa anche altre cose-come capire se tutte le variabili sono modificate in funzione, e di garantire che siano passati indietro dal valore di ritorno. inoltre, controlla per eventuali eccezioni generate, e aggiungerli alla lista.

L'effetto netto è che, mentre si può essere in grado di approssimare alcuni di questi in Vim, davvero non stanno andando per essere in grado di ottenere questo lavoro in un ambiente ricercato Vim-only. Si potrebbe utilizzare una combinazione di tasti Vim-come in Eclipse corretta, o guardare eclim . Dalla home page:

  

L'obiettivo primario di eclim è quello di portare   Eclipse funzionalità al Vim   editore. L'obiettivo iniziale era quello di   fornire funzionalità java di Eclipse   in vim, ma il supporto per vari altri   lingue (C / C ++, PHP, Python, Ruby,   css, html, xml, etc.) sono state aggiunte   e molti altri sono in programma.

     

Eclim è meno di un'applicazione e   più di un'integrazione di due grandi   progetti. Il primo, Vim, è senza dubbio   uno dei migliori editor di testo in   esistenza. Il secondo, Eclipse,   fornisce molti strumenti per   lo sviluppo in varie lingue. Ogni   offre molte caratteristiche che possono   aumentare la produttività degli sviluppatori, ma   entrambi ancora lasciare qualcosa di essere   desiderato. Vim manca il supporto Java nativo   e molte delle caratteristiche avanzate   disponibili in Eclipse. Eclipse, sulla   D'altra parte, richiede ancora l'uso di   il mouse per molte cose, e quando   rispetto al Vim, fornisce un meno   interfaccia ideale per la modifica del testo.

     

E 'qui che entra in gioco eclim.   Invece di cercare di scrivere un IDE in   Vim o un editor Vim in Eclipse, eclim   fornisce un plug-in Eclipse che   espone funzioni Eclipse attraverso un   interfaccia del server, e una serie di Vim   plug-in che comunicano con Eclipse   su tale interfaccia.

Questo non solo dà un ambiente Eclipse-simili, è Eclipse. Ma è ancora ottenere le funzioni di navigazione e di modifica del testo di vim. Sembra che questo potrebbe soddisfare le vostre esigenze, anche se la documentazione sul refactoring supporto non indica che fornisce una funzionalità metodo di estratto.

Altri suggerimenti

Ho scritto un refactoring plug . C ++ è una delle lingue principali trattati (come è la mia lingua principale sul posto di lavoro). estrazione metodo è supportato.

Per C ++, il plugin è in grado (grazie a ctags) di dedurre la maggior parte (ma purtroppo non sempre tutto - grazie a ctags ...) delle variabili che entrano ed escono della funzione di estratto. Devo ancora scrivere un po 'di finestra di dialogo per selezionare la modalità saranno scambiati i nelle variabili / out (ref const, rvalue ref, copiare, puntatore, tuple, struct, e così via) (a proposito, l'aiuto è benvenuto come le GUI non sono il mio genere ^^ ') .

Dopo la ricerca di alta e bassa per vim con il refactoring per C ++, questa è la soluzione migliore che ho messo a punto.

  • Visual Studio 2013 e superiori - Grande IDE per lo sviluppo e il debug C ++, ma non dispone di refactoring o vim sufficienti
  • Installa il plugin vsvim - Ora, si ha tutta la navigazione vim, la ricerca, la sostituzione di stringa, ecc (Alcune funzioni avanzate non sono supportate)
  • Installa Resharp C ++ - Grande per il refactoring a costo di velocità. Lo rende un po 'goffo, ma se si vuole dedurre automaticamente generare metodi / variabili, rinominare le variabili locali / globali / di metodo o funzioni, Ricerca per usi nella soluzione, e più caratteristiche, rende estremamente vale la pena.

Questa è la combinazione migliore che ho trovato per C ++ lo sviluppo, il debug e refactoring. Mi rende almeno 3x - 5x più veloce. Spero che ti aiuta pure.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top