【发布时间】:2018-05-04 07:53:27
【问题描述】:
我有这种简单的情况。我想重构角色变量的名称:
看起来 Visual Studio Code 足够聪明,知道不应触及 URL 中的“角色”。
我只想重构单个文件中的变量名称,在单个范围内,而不是整个文件,绝对不是多个文件!
如果我使用 Ctrl + H,它将带我进入一个菜单,默认情况下会重构多个文件或整个单个文件中的名称,但我只想在单个函数范围内重构名称!
【问题讨论】:
我有这种简单的情况。我想重构角色变量的名称:
看起来 Visual Studio Code 足够聪明,知道不应触及 URL 中的“角色”。
我只想重构单个文件中的变量名称,在单个范围内,而不是整个文件,绝对不是多个文件!
如果我使用 Ctrl + H,它将带我进入一个菜单,默认情况下会重构多个文件或整个单个文件中的名称,但我只想在单个函数范围内重构名称!
【问题讨论】:
使用rename symbol 而不是标准的查找/替换。 Rename 默认绑定到 F2。
重命名符号将知道仅触及示例中的本地 roles 引用。 Visual Studio Code 附带对 JavaScript 和 TypeScript 的重命名支持。其他语言可能需要安装语言扩展。
【讨论】:
a.SomeValue:string 和 b.SomeValue:number 并使用 ctrl 更改 a 的 SomeValue 属性+F2,也会重命名b的属性,即使它们是不同的类型。“重命名符号”只会重命名类型的属性。
使用重命名符号。默认情况下使用 Ctrl + F2 定义。
但是,请记住,您正在更改的变量、定义、函数等将在文件本身中更改,而不仅仅是范围。 Visual Studio Code 目前没有用于重命名范围内的变量(例如,函数内的变量)的实现。所以请记住这一点。
【讨论】:
对于 macOS 用户:使用 Fn + ⌘ + F2 重命名代码块内的变量。
【讨论】:
Fn + F2
要打开您的用户和工作区设置,请使用以下 Visual Studio Code 菜单命令:
在 Windows/Linux 上:菜单 文件 → 首选项 → 设置。在 macOS 上:代码 → 首选项 → 设置。
您还可以使用首选项从命令面板(Ctrl + Shift + P)打开设置编辑器>,打开设置或使用键盘快捷键(Ctrl + ,)。
在搜索栏中,输入keybindings.json,并添加以下代码:
{
"command": "editor.action.changeAll",
"key": "ctrl+f2",
"when": "editorTextFocus && !editorReadonly"
}
和
{
"command": "editor.action.rename",
"key": "f2",
"when": "editorHasRenameProvider && editorTextFocus && !editorReadonly"
}
在键绑定中。
F2 似乎适用于所有文件,而 Ctrl + F2 仅适用于当前文件。
【讨论】:
keybindings.json而不是settings.json?
editor.action.changeAll 将根据text 值执行此操作,而editor.action.rename 将根据reference 执行此操作。这就是为什么,如果您导出/导入变量/函数名称,它将跨文件重命名。请注意这一点!此外,如果您想重命名 所有 引用,并且不使用别名(如 originalName as newName),您可以在 settings.json 中更改此设置:"javascript.preferences.useAliasesForRenames": false