Cum se refactorizează în Sublime Text? (Ruby, Rails, JavaScript) (Programare, Javascript, Ruby Pe Șine, Ruby, Sublimtext2)

Daryll Santos a intrebat.

Am folosit Netbeans înainte. Cum pot face o refactorizare (schimbarea numelor variabilelor, transformarea metodei din cod, etc.) în Sublime Text 2 pe Mac? Ceea ce fac acum este „select next instance of a word”, dar asta doar pentru că folosesc un singur fișier

6 răspunsuri
Stephan Ahlf

Am scris acest plugin pentru refactorizarea JavaScripthttps://github.com/s-a/sublime-text-refactor

Cred că există mult mai multe care susțin RoR.

Comentarii

  • @StephanAhif Există o modalitate de a atribui comenzi rapide pentru funcționalitățile plugin-ului tău? mulțumesc –  > Por Clint Eastwood.
  • Puteți utiliza legăturile de taste definite de utilizator Sublime Text în meniul {Preferences / Key Bindings – User}. Aceasta este intrarea pe care o folosesc pentru a sări la o definiție var {„keys”: [„f2”]], „command”: „gotodefinition”, „args”: {}}. –  > Por Stephan Ahlf.
  • Nu văd nicio problemă cu acest plugin. Pur și simplu funcționează. –  > Por Stephan Ahlf.
CarlosRos

Ceea ce funcționează pentru mine este opțiunea „Find all” (Ctrl+F și Alt+Enter).

În acest fel, puteți edita textul și toate corespondențele vor fi editate în același timp.

Comentarii

  • Specificarea „Cuvânt întreg” și „Sensibilitate la majuscule și minuscule” ajută foarte mult atunci când folosiți această metodă. Problema este că se vor înlocui și cuvintele din comentarii și șiruri de caractere. Ocazional, acest lucru este convenabil atunci când includ nume de variabile în declarațiile de tipărire de depanare, dar de obicei este nedorit. –  > Por Wassadamo.
Daryll Santos

Ceea ce s-a întâmplat aici a fost că am făcut doar refactoring prin grepping și find/replace. Acum sunt pe Vim și substituirea/grepping este încă metoda mea atunci când trebuie să refactorizez. Cred că aceasta este una dintre caracteristicile pe care un IDE le oferă și pe care un editor de text nu le oferă.

Comentarii

  • Din nefericire, oamenii trebuie să le scrie ca pluginuri. Până în prezent (01/08/2015) există 3 plugin-uri cunoscute care permit refactorizarea: python – PyRefactor, php – PhpSimpleRefactor și javascript – JsRefactor.  > Por Prancer.
Faysal Ahmed

Alături de ctrl+click puteți folosi și ctrl+D. Funcționează pentru mine.

Comentarii

  • Acest lucru face trucul pentru scripturile independente. Pentru refactorizarea mai multor fișiere putem folosi opțiunea „search in files”, pentru că se uită pe toată lumea, nu doar pe fișierele „project” sau „opened”. Ceea ce încă îmi lipsește este refactorizarea mutării/copiilor de dosare, urmărind căile. Îmi amintesc că Eclipse face asta la opțiunea de meniu „Refactor”. –  > Por m3nda.
  • Trebuie să apăsați din nou ctrl+D pentru a obține selecții suplimentare în dosar. –  > Por portforwardpodcast.
  • Pentru utilizatorii de mac: prefer să folosesc command+D. Apăsați butoanele împreună de mai multe ori pentru a selecta elementele de refactorizat. –  > Por Md Shihab Uddin.
Edmund Sulzanok

Ceea ce fac eu este să selectez mai multe variabile cu ctrl+click și, odată ce ați tastat, toate șirurile selectate se modifică. Singura diferență este că trebuie să le selectați manual. Dar, din nou – odată ce o selectați pe prima, toate variabilele care se potrivesc sunt evidențiate

eloone

sublime-text-refactor plugin funcționează atâta timp cât aveți nevoie să refactorizați variabilele. Dacă aveți nevoie să refactorizați șiruri simple, nu funcționează. De exemplu, dacă aveți nevoie să înlocuiți 'components' în căile de acces la fișiere 'file/*/components' cu 'sections' pluginul nu vă va ajuta deoarece se așteaptă să redenumească variabilele (consola indică atunci când încerc să refactorizez: unable to locate components variabilă).

Răspunsul meu nu are legătură cu sublime text, dar am fost condus la acest fir de discuție când am găsit soluția adaptată, astfel încât ar putea ajuta oamenii în același caz. Sublime text nu este neapărat soluția pentru refactorizare.

În NodeJs, ceea ce am făcut pentru a asigura refactorizarea între fișiere a fost să creez o sarcină gulp care să înlocuiască valoarea și să rescrie fișierul:

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

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

$gulp refactor

Ceea ce face acest lucru este că, în toate fișierele js sub numele de fișier app directorul, înlocuiesc șirul 'components' cu șirul 'sections'. În cazul meu aveam nevoie de înlocuirea simplă a șirului, nu era vorba de redenumirea variabilelor, așa că nevoia era foarte simplă și această metodă este foarte eficientă pentru asta. Adaptați această metodă la cazul dumneavoastră și faceți o copie de siguranță a codului înainte de a refactoriza, , deoarece este echivalentul căutării/înlocuirii prin grep, nu există o verificare prealabilă, fiți siguri de ceea ce faceți.

Vă sfătuiesc să ștergeți sarcina gulp după ce ați terminat cu refactorizarea, deoarece poate fi foarte periculoasă ! ATENȚIE