我以前用过Netbeans。如何在 Mac 上的 Sublime Text 2 中进行一些重构(更改变量名称、使用代码生成方法等)?我现在正在做的是“选择一个单词的下一个实例”,但这只是因为我只使用一个文件
6 回答
我为 JavaScript 重构编写了这个插件 https://github.com/sa/sublime-text-refactor
我想还有更多支持 RoR。
对我有用的是“查找全部”选项(Ctrl+F 和 Alt+Enter)。
这样您就可以编辑文本,并且所有匹配项都将同时被编辑。
这里发生的事情是我只是通过 grepping 和 find/replace 进行了重构。我现在在 Vim 上,当我需要重构时,替换/grepping 仍然是我的方法。我想这是 IDE 提供的文本编辑器不提供的功能之一。
除了 ctrl+click,您还可以使用 ctrl+D。为我工作。
我所做的是使用 ctrl+click 选择多个变量,一旦您键入,所有选定的字符串都会更改。唯一的区别是您需要手动选择它们。但话又说回来——一旦你选择了第一个,所有匹配的变量都会突出显示
sublime-text-refactor
只要您需要重构变量,该插件就可以工作。如果您需要重构纯字符串,则它不起作用。例如,如果您需要通过插件替换'components'
文件路径将无济于事,因为它希望重命名变量(当我尝试重构时控制台会显示:无法定位变量)。'file/*/components'
'sections'
components
我的回答与崇高文本无关,但是当我找到合适的解决方案时,我被引导到这个线程,因此它可能会在相同情况下对人们有所帮助。Sublime text 不一定是重构的解决方案。
在 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 文件中,我将 string 替换为'components'
string 'sections'
。在我的情况下,我需要简单的字符串替换,它不是变量重命名,所以需要非常简单,这种方法非常有效。将此方法适应您的情况并在重构之前备份您的代码,因为它相当于通过 grep 查找/替换,没有事先检查,请确保您在做什么。
我建议在完成重构后删除 gulp 任务,因为它可能非常危险!警告