web-dev-qa-db-ja.com

Sublime Textでリファクタリングする方法は? (Ruby、Rails、JavaScript)

以前にNetbeansを使用しました。 MacのSublime Text 2でリファクタリング(変数名の変更、コードからのメソッドの作成など)を行うにはどうすればよいですか?私が今していることは「Wordの次のインスタンスを選択する」ことですが、それはただ1つのファイルしか使用していないからです

15
Daryll Santos

ここで起こったことは、greppingとfind/replaceを介してリファクタリングを行っただけです。私は今Vimを使っていますが、リファクタリングする必要があるときは、substitute/greppingが私の方法です。これは、IDEがテキストエディターでは提供しない機能の1つです。

5
Daryll Santos

JavaScriptリファクタリング用にこのプラグインを作成しました https://github.com/s-a/sublime-text-refactor

RoRをサポートしているものはもっとたくさんあると思います。

7
Stephan Ahlf

私にとって有効なのは、「すべて検索」オプション(Ctrl + FおよびAlt + Enter)です。

この方法でテキストを編集でき、すべての一致が同時に編集されます。

6
CarlosRos

Ctrl + clickの他に、ctrl + Dも使用できます。私のために働く。

2
Faysal Ahmed

私がしているのは、Ctrlキーを押しながらクリックして複数の変数を選択し、入力すると選択したすべての文字列が変更されることです。唯一の違いは、手動で選択する必要があることです。ただし、最初の変数を選択すると、一致するすべての変数が強調表示されます

0
Edmund Sulzanok

sublime-text-refactorプラグインは、変数をリファクタリングする必要がある限り機能します。プレーン文字列をリファクタリングする必要がある場合、機能しません。たとえば、ファイルパスの'components''file/*/components''sections'に置き換える必要がある場合、プラグインは変数の名前を変更することを想定しているため、役に立ちません(コンソールはリファクタリングしようとすると表示されます: components変数)。

私の答えは崇高なテキストとは関係ありませんが、同じケースの人々を助けるために適応した解決策を見つけたとき、私はこのスレッドに導かれました。崇高なテキストは必ずしもリファクタリングの解決策ではありません。

NodeJsでは、ファイル全体のリファクタリングを確実にするために、値を置き換えてファイルを書き換えるgulpタスクを作成しました。

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

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

$gulp refactor

これは、appディレクトリの下のすべてのjsファイルで、文字列'components'を文字列'sections'に置き換えます。私の場合、単純な文字列置換が必要でしたが、変数名の変更ではなかったため、必要性は非常に簡単で、この方法は非常に効率的です。この方法をあなたのケースに合わせて、リファクタリングする前にコードをバックアップしてください、これはgrepによる検索/置換と同等であるため、事前のチェックはありません。何をしているのかを確認してください。

リファクタリングが完了したら、gulpタスクを削除することをお勧めします。これは非常に危険です。注意

0
eloone