Refactor lokaler Variablenname mit Visual Studio Code


75

Ich habe diese einfache Situation. Ich möchte den Namen der Rollenvariablen umgestalten:

Geben Sie hier die Bildbeschreibung ein

Es sieht so aus, als ob Visual Studio Code klug genug ist, um zu wissen, dass "Rollen" in der URL nicht berührt werden sollten.

Ich möchte nur den Namen der Variablen in einer einzelnen Datei, in einem einzelnen Bereich, nicht in der gesamten Datei und definitiv nicht in mehreren Dateien umgestalten!

Wenn ich Ctrl+ verwende H, komme ich zu einem Menü, das standardmäßig den Namen in mehreren Dateien oder einer ganzen einzelnen Datei umgestaltet, aber ich möchte den Namen nur in einem einzigen Funktionsumfang umgestalten!

Antworten:


131

Verwenden Sie das Umbenennungssymbol anstelle des Standard-Such- / Ersetzungssymbols. Das Umbenennen ist F2standardmäßig gebunden .

Das Umbenennungssymbol berührt nur die lokalen rolesReferenzen in Ihrem Beispiel. Visual Studio Code wird mit Umbenennungsunterstützung für JavaScript und TypeScript geliefert. Für andere Sprachen muss möglicherweise eine Spracherweiterung installiert werden.


1
Mann, gibt es eine Möglichkeit, etwas einfacher als die Taste f2 zu verwenden? das ist wirklich schwer zu bedienen. Warum gibt es nicht mehr Rechtsklickoptionen?
Alexander Mills

7
Klicken Sie mit der rechten Maustaste auf das Symbol. Es sollte da sein. Sie können dies auch an eine beliebige Tastenkombination binden
Matt Bierner

Der Kontextmenüpunkt wird nicht angezeigt, wenn der aktuelle Sprachserver die Funktion nicht unterstützt.
Álvaro González

4
In meinem Fall ist STRG + F2. Ich verwende derzeit Version 1.30.2
Silvio Delgado

3
Beachten Sie, dass sich "Alle Vorkommen ändern" von "Symbol umbenennen" unterscheidet. "Alle Vorkommen ändern" scheint auf das aktuelle Dokument beschränkt zu sein, während sich "Symbol umbenennen" im Projekt verbreitet. Darüber hinaus benennt "Alle Vorkommen ändern" die Eigenschaften verschiedener Objekte gerne um, wenn sie den gleichen Namen haben (z. B. wenn Sie zwei Objekte haben a.SomeValue:stringund b.SomeValue:numberdie SomeValueEigenschaft von a mit Strg + F2 ändern, wird die Eigenschaft auch umbenannt von b, auch wenn es sich um verschiedene Typen handelt. "Symbol umbenennen" benennt nur die Eigenschaft des Typs um.
CGundlach

20

Verwenden Sie Symbol umbenennen . Es ist standardmäßig mit Ctrl+ definiert F2.

Beachten Sie jedoch, dass die Variable, Definition, Funktion usw., die Sie ändern, in der Datei selbst geändert werden, nicht nur im Bereich. Visual Studio Code verfügt derzeit nicht über eine Implementierung zum Umbenennen einer Variablen in einem Bereich (z. B. einer Variablen in einer Funktion). Denken Sie also daran.

Visual Studio Code - Ändern Sie alle Vorkommen


4
Keine Ahnung, ob es geändert wurde, nachdem diese Antwort veröffentlicht wurde, aber es gibt derzeit zwei verschiedene Befehle: Symbol umbenennen (F2) und Alle Vorkommen ändern (Strg + F2). Der Schlaue, wenn der erste, soweit ich weiß.
Álvaro González

1
Nur um hinzuzufügen, seien Sie vorsichtig, wenn Sie dies verwenden. Ich habe es nur verwendet und es hat jede Instanz während eines gesamten Projekts geändert, nicht nur die Datei, an der ich gearbeitet habe, und vscode konnte es nicht umkehren. Es ist nur ein Fehler aufgetreten, der besagt, dass der Refactor fehlgeschlagen ist. Gott sei Dank für Git ist alles, was ich sagen kann.
iFunction

18

Für MacOS-Benutzer: Verwenden Sie Fn+ + F2, um eine Variable innerhalb eines Codeblocks umzubenennen.


Vielen Dank. Es funktioniert für mich auf dem Mac.
Nroy

4

Verwenden Sie den folgenden Menübefehl für Visual Studio Code, um Ihre Benutzer- und Arbeitsbereichseinstellungen zu öffnen :

Auf Windows / Linux : Menü DateiEinstellungenEinstellungen . Unter macOS : CodeEinstellungenEinstellungen .

Sie können den Einstellungseditor auch über die Befehlspalette ( Ctrl+ Shift+ P) mit den Einstellungen öffnen Einstellungen oder die Tastenkombination ( Ctrl+ ,) verwenden.

Geben Sie hier die Bildbeschreibung ein

Geben Sie in der Suchleiste den settings.jsonfolgenden Code ein und fügen Sie ihn hinzu:

{
  "command": "editor.action.changeAll",
  "key": "ctrl+f2",
  "when": "editorTextFocus && !editorReadonly"
}

und

{
  "command": "editor.action.rename",
  "key": "f2",
  "when": "editorHasRenameProvider && editorTextFocus && !editorReadonly"
}

In den Tastenkombinationen.

F2scheint für alle Dateien und Ctrl+ nur F2in der aktuellen Datei zu funktionieren .


willst du keybindings.jsonstatt sagen settings.json?
user9074332
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.