Как рефакторинг в 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 и после ввода, все выбранные строки являются изменениями. Разница лишь в том, что выбирать их нужно вручную. Но опять же-как только вы выберете первый, все соответствующие переменные будут выделены
на 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-->