web-dev-qa-db-fra.com

Comment refactoriser en Sublime Text? (Rubis, Rails, JavaScript)

J'ai déjà utilisé Netbeans. Comment faire du refactoring (changement de nom de variable, création de méthode à partir de code, etc.) dans Sublime Text 2 sur un Mac? Ce que je fais en ce moment, c'est "sélectionner la prochaine instance d'un mot", mais c'est uniquement parce que j'utilise un seul fichier

15
Daryll Santos

Ce qui s'est passé ici, c'est que je viens de refactoriser via grepping et find/replace. Je suis sur Vim maintenant et le remplacement/grepping est toujours ma méthode quand j'ai besoin de refactoriser. Je suppose que c'est l'une des fonctionnalités qu'un IDE fournit qu'un éditeur de texte ne fait pas.

5
Daryll Santos

J'ai écrit ce plugin pour le refactoring JavaScript https://github.com/s-a/sublime-text-refactor

Je suppose qu'il y a beaucoup plus de soutien à RoR.

7
Stephan Ahlf

Ce qui fonctionne pour moi, c'est l'option "Rechercher tout" (Ctrl + F et Alt + Entrée).

De cette façon, vous pouvez modifier le texte et toutes les correspondances seront modifiées en même temps.

6
CarlosRos

Parallèlement à Ctrl + clic, vous pouvez également utiliser Ctrl + D. Travaille pour moi.

2
Faysal Ahmed

Ce que je fais, c'est sélectionner plusieurs variables avec ctrl + clic et une fois que vous tapez, toutes les chaînes sélectionnées sont des changements. La seule différence est que vous devez les sélectionner manuellement. Mais là encore - une fois que vous avez sélectionné la première, toutes les variables correspondantes sont mises en évidence

0
Edmund Sulzanok

Le sublime-text-refactor le plugin fonctionne aussi longtemps que vous avez besoin de refactoriser les variables. Si vous avez besoin de refactoriser des chaînes simples, cela ne fonctionne pas. Par exemple, si vous devez remplacer 'components' dans les chemins de fichiers 'file/*/components' par 'sections' le plugin ne vous aidera pas car il s'attend à renommer les variables (la console indique quand j'essaye de refactoriser: impossible de localiser la variable components).

Ma réponse n'est pas liée au texte sublime mais j'ai été amené à ce fil quand j'ai trouvé la solution adaptée afin qu'elle puisse aider les gens dans le même cas. Le texte sublime n'est pas forcément la solution pour le refactoring.

Dans NodeJs, ce que j'ai fait pour m'assurer que le refactorisme entre les fichiers était de créer une tâche gulp qui remplace la valeur et réécrit le fichier:

var gulpReplace = require('gulp-replace');

gulp.task('refactor', function(){
  gulp.src(['app/**/*.js'], { base: './' })
  .pipe(gulpReplace(/components/g, 'sections'))
  .pipe(gulp.dest('./'));
});

$gulp refactor

Cela signifie que, dans tous les fichiers js du répertoire app, je remplace la chaîne 'components' par la chaîne 'sections'. Dans mon cas, j'avais besoin d'un remplacement de chaîne simple, ce n'était pas un changement de nom, donc le besoin était très simple et cette méthode est très efficace pour cela. Adaptez cette méthode à votre cas et sauvegardez votre code avant de refactoriser, car c'est l'équivalent de trouver/remplacer via grep, il n'y a pas de contrôle préalable, assurez-vous de ce que vous faites.

Je vous conseille de supprimer la tâche de gorgée une fois que vous avez terminé votre refactoring car cela peut être très dangereux! MISE EN GARDE

0
eloone