Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

Здесь произошло то, что я просто делал рефакторинг через grepping и find/replace. Я сейчас на Vim, а substitute/grepping все еще мой метод, когда мне нужно рефакторировать. Я предполагаю, что это одна из возможностей, которую обеспечивает IDE, что текстовый редактор не делает.

Ответ 2

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

Я думаю, что есть намного больше поддержки RoR.

Ответ 3

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

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

Ответ 4

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

Ответ 5

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

Ответ 6

Плагин 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

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

Советую удалить задачу gulp после завершения рефакторинга, поскольку это может быть очень опасно! ВНИМАНИЕ