Как рефакторинг в Sublime Text? (Ruby, Rails, JavaScript)

Я использовал Netbeans раньше. Как сделать рефакторинг (изменение имен переменных, сделать метод из кода и т. д.) В Sublime Text 2 на Mac? Сейчас я делаю "выбрать следующий экземпляр Слова", но это только потому, что я использую только один файл

6 ответов


Я написал этот плагин для рефакторинга JavaScript https://github.com/s-a/sublime-text-refactor

Я думаю, что есть гораздо больше там, поддерживая Рор.


здесь произошло то, что я просто сделал рефакторинг через grepping и нашел/заменил. Я сейчас на Vim, и замена / grepping по-прежнему мой метод, когда мне нужно рефакторинг. Я думаю, это одна из функций, которую IDE предоставляет текстовому редактору.


для меня работает опция "Найти все" (Ctrl+F и Alt+Enter).

таким образом, вы можете редактировать текст и все матчи будут редактироваться одновременно.


наряду с ctrl + click вы также можете использовать ctrl+D. Работать на меня.


Что я делаю, это выбрать несколько переменных с помощью ctrl + click и после ввода, все выбранные строки являются изменениями. Разница лишь в том, что выбирать их нужно вручную. Но опять же-как только вы выберете первый, все соответствующие переменные будут выделены


на sublime-text-refactor плагин работает так долго, как вам нужно, чтобы рефакторинг переменных. Если вам нужно отрефакторить простыми строками не работает. Например, если вам нужно заменить 'components' в пути к файлу 'file/*/components' by '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

что это делает, так это то, что во всех JS-файлах под app каталог, я заменяю строку 'components' в строке 'sections'. В моем случае мне нужна была простая замена строки, это не было переименование переменных, поэтому необходимость была очень просто и этот метод очень эффективен для этого. Адаптируйте этот метод к вашему случаю и резервное копирование кода перед рефакторингом, поскольку это эквивалентно поиску / замене через grep, нет предварительной проверки, будьте уверены в том, что вы делаете.

я советую удалить задачу gulp, как только вы закончите рефакторинг, так как это может быть очень опасно ! Осторожно!--10-->