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