Переименовать переменную Visual Studio

Обновлено: 04.07.2024

VisualStudio: ярлык для переименования переменной (7)

В Visual Studio, когда вы переименовываете имя переменной в ее определении, в последней букве появляется небольшое подчеркивание, поэтому, если вы наведете на нее курсор, вы получите вариант "Переименовать OldVaribleName в NewVariableName" и, таким образом, переименовать все записи в этом процедура этой переменной.

Есть ли для этого ярлык без использования мыши?

В качестве обновленного ответа.

Обновление для Visual Studio 2017

В Visual Studio 2017 щелкните переменную, а затем нажмите Ctrl + r, r . Это работает без проблем (см. комментарии ниже о различиях в Visual Studio 2015, где нужно было повторить всю команду).

Visual Studio 2015

В Visual Studio 2015, если щелкнуть переменную и использовать Ctrl + R, Ctrl + R, будет зафиксировано имя переменной и выделены все экземпляры переменной. Затем, когда вы начнете вводить новое имя переменной, оно сразу переименует все экземпляры. Когда закончите, нажмите Enter, чтобы выйти (примечание: между версиями обновления могут существовать различия. См. комментарии ниже).

Правка: одно предупреждение об этом подходе. Если вы используете Razor в своих представлениях, он не обязательно будет переименовывать эти переменные. Я не проводил эмпирического эксперимента, чтобы увидеть, есть ли определенные случаи, когда он их подбирает или не подбирает, но у меня определенно было несколько случаев, когда он переименовывал более строго типизированные переменные в коде на стороне сервера (DAL и контроллеры). ), но не просмотры.

У меня работает Ctrl + h Удачи

Я думаю, что по умолчанию используется Ctrl + . .

Открывается окно, которое можно использовать для поиска и замены всех вхождений слова. Вы можете заменить слово в «Текущий документ», «Все открытые документы», «Текущий проект» или «Все решение» в раскрывающемся меню под кнопкой с надписью «Заменить все», когда вы наводите на нее указатель мыши.

Надеюсь, это поможет.

В Visual Studio 2013 перечисленные сочетания клавиш Ctrl + . , F2 и т.д. у меня не работали.

Я обнаружил, что установка расширения Visual C++ Refactoring решила мою проблему.

Теперь я могу использовать Ctrl + R , что вызывает всплывающее окно рефакторинга и позволяет мне выбрать текущую область по умолчанию, а также другие экземпляры в том же файле.

Вот пример переменной, которую я переименовал в функции. Там была еще одна функция с таким же именем переменной, которую она предлагает переименовать.

Рефакторинг исходного кода может повысить качество и удобство сопровождения вашего проекта за счет реструктуризации кода без изменения поведения во время выполнения. Visual Studio Code поддерживает операции рефакторинга (рефакторинги), такие как извлечение метода и извлечение переменной, чтобы улучшить кодовую базу прямо в редакторе.

рефакторинг основного изображения

Например, распространенным рефакторингом, используемым для предотвращения дублирования кода (головная боль обслуживания), является рефакторинг метода извлечения, когда вы выбираете исходный код, который хотите повторно использовать в другом месте, и извлекаете его в собственный общий метод.

Рефакторинг предоставляется языковой службой, а VS Code имеет встроенную поддержку рефакторинга TypeScript и JavaScript через языковую службу TypeScript. Поддержка рефакторинга для других языков программирования обеспечивается через расширения VS Code, которые предоставляют языковые службы. Пользовательский интерфейс и команды для рефакторинга одинаковы для разных языков, и в этом разделе мы продемонстрируем поддержку рефакторинга с помощью языковой службы TypeScript.

Действия кода = быстрые исправления и рефакторинг

В VS Code действия кода могут обеспечивать как рефакторинг, так и быстрые исправления для обнаруженных проблем (выделены зелеными волнистыми линиями). О доступном кодовом действии сигнализирует лампочка рядом с исходным кодом, когда курсор находится на волнистой линии или выделенной текстовой области. Нажав на лампочку Code Action или используя команду Quick Fix ⌘. (Windows, Linux Ctrl+. ) отобразит быстрые исправления и рефакторинги.

Если вы просто хотите увидеть рефакторинг без быстрых исправлений, вы можете использовать команду Refactor ( ⌃⇧R (Windows, Linux Ctrl+Shift+R )).

Примечание. Если вы предпочитаете, чтобы лампочка Code Action не отображалась в вашем редакторе, вы можете отключить лампочки с помощью параметра editor.lightbulb.enable. Вы по-прежнему можете открывать Quick Fixs с помощью команды Quick Fix и ⌘. (Windows, Linux Ctrl+. ) сочетание клавиш.

Рефакторинг действий

Метод извлечения

Выберите исходный код, который вы хотите извлечь, а затем нажмите лампочку в поле или нажмите ( ⌘. (Windows, Linux Ctrl+. ) ), чтобы увидеть доступные рефакторинги. Фрагменты исходного кода могут быть извлечены в новый метод или в новую функцию в различных областях. Во время рефакторинга извлечения вам будет предложено указать осмысленное имя.

Извлечь переменную

Языковая служба TypeScript обеспечивает рефакторинг Extract to const для создания новой локальной переменной для текущего выбранного выражения:

При работе с классами вы также можете извлечь значение в новое свойство.

Переименовать символ

Переименование — это обычная операция, связанная с рефакторингом исходного кода, и в VS Code есть отдельная команда «Переименовать символ» ( F2 ). Некоторые языки поддерживают символ переименования файлов. Нажмите F2, затем введите новое желаемое имя и нажмите Enter. Все случаи использования символа будут переименованы в разных файлах.

Rename

Сочетания клавиш для кодовых действий

Команда editor.action.codeAction позволяет настраивать сочетания клавиш для определенных действий кода. Эта привязка клавиш, например, запускает действия кода рефакторинга функции извлечения:

Типы Code Action задаются расширениями с использованием расширенного API CodeActionProvided. Виды являются иерархическими, поэтому "kind": "refactor" покажет все действия кода рефакторинга, тогда как "kind": "refactor.extract.function" покажет только рефакторинги функции Extract.

При использовании приведенной выше комбинации клавиш, если доступно только одно кодовое действие «refactor.extract.function», оно будет применено автоматически. Если доступно несколько действий кода функции извлечения, мы вызываем контекстное меню, чтобы выбрать их:

Выберите контекст действия кода меню

Вы также можете управлять тем, как и когда кодовые действия автоматически применяются с помощью аргумента применения:

Действительные значения для "применить":

  • "first" — всегда автоматически применять первое доступное кодовое действие.
  • "ifSingle" — по умолчанию. Автоматически применять кодовое действие, если доступно только одно. В противном случае показать контекстное меню.
  • "never" – всегда показывать контекстное меню Code Action, даже если доступно только одно Code Action.

Если для сочетания клавиш Code Action установлено значение «preferred»: true , отображаются только предпочитаемые быстрые исправления и рефакторинги. Предпочтительное быстрое исправление устраняет основную ошибку, в то время как предпочтительный рефакторинг является наиболее распространенным вариантом рефакторинга. Например, несмотря на то, что может существовать несколько рефакторингов refactor.extract.constant, каждый из которых извлекается в разные области действия в файле, предпочтительным рефакторингом refactor.extract.constant является тот, который извлекается в локальную переменную.

Это сочетание клавиш использует "preferred": true для создания рефакторинга, который всегда пытается извлечь выбранный исходный код в константу в локальной области:

Расширения с рефакторингом

Вы можете найти расширения, поддерживающие рефакторинг, в VS Code Marketplace. Вы можете перейти в представление «Расширения» ( ⇧⌘X (Windows, Linux Ctrl+Shift+X )) и ввести «рефакторинг» в поле поиска. Затем вы можете отсортировать по количеству установок или рейтингу, чтобы увидеть, какие расширения популярны.

Совет. Показанные выше расширения запрашиваются динамически. Нажмите на плитку расширения выше, чтобы прочитать описание и отзывы, чтобы решить, какое расширение лучше всего подходит для вас.

Дальнейшие шаги

    - Посмотрите вводный видеоролик о функциях редактирования кода. - VS Code позволяет быстро перемещаться по исходному коду. - Узнайте об отладке с помощью VS Code.

Частые вопросы

Почему я не вижу лампочки, когда в моем коде есть ошибки?

Лампочки (кодовые действия) отображаются только при наведении курсора на текст, показывающий ошибку. При наведении курсора на текст отобразится описание ошибки, но вам нужно переместить курсор или выделить текст, чтобы увидеть лампочки для быстрых исправлений и рефакторинга.

Рефакторинг с переименованием, если существующее имя символа неоднозначно, вводит в заблуждение, написано с ошибкой или нестандартно. Rename изменяет определение, объявление в C/C++ и все ссылки в проекте или во всем решении. При переименовании можно изменить «ссылки» в комментариях и строках.

Переименование доступно для пространств имен, классов, методов, полей, переменных и параметров методов; и может быть вызван из определения, ссылки или объявления символа.

Visual Studio 2015 и новее

Хотя функции Rename, встроенной в Visual Studio, часто бывает достаточно, версия в Visual Assist обычно работает быстрее.

Доступ

Поместите курсор на символ и используйте сочетание клавиш по умолчанию (Shift+Alt+R) для переименования или выберите «Переименовать» в меню «Быстрое действие и рефакторинг» (Shift+Alt+Q).


Введите новое имя для вашего символа и выберите область переименования. Вы можете предварительно просмотреть ссылки, прежде чем приступать к рефакторингу.


Если вы вручную переименуете символ в его определении, Visual Assist может распознать изменение и предложить немедленно переименовать ссылки с предварительным просмотром или без него в диалоговом окне "Переименование".


Доступ к переименованию также доступен в нескольких окнах инструментов, в том числе в обозревателе класса при наведении курсора в представлении ВА и на схеме ВА.

Переименовать в нескольких проектах

Вы можете переименовывать все решение, установив флажок в диалоговом окне "Переименовать". Несколько узлов проекта отображаются в списке переименований, когда ссылки находятся в нескольких проектах.


Если переименование выполняется не во всех проектах, переименование ограничивается проектом, содержащим текущий файл.

Откроется диалоговое окно "Переименовать" с областью действия предыдущего действия "Переименовать", "Изменить подпись" или "Найти ссылки".

Несколько ссылок

Несколько ссылок, встречающихся в одной строке исходного кода, отображаются в нескольких записях в списке переименований.


Выделить ссылки

Найденные ссылки могут быть выделены полужирным шрифтом и выделены в списке переименований. По умолчанию ссылки, в которых изменен символ, выделяются в MistyRose , тогда как ссылки, в которых символ читается, выделяются в LightCyan .


Для выделения необходимо применить расширенную синтаксическую раскраску к представлениям VA в диалоговом окне параметров визуального помощника.



Переименовать в цепочке наследования

Visual Assist может переименовывать ссылки, унаследованные от родительских классов, и переопределенные ссылки в дочерних классах. При использовании этого параметра виртуальные методы переименовываются вверх и вниз по иерархии классов


Переименовать комментарии и ссылки на строки

Вы можете расширить переименование, включив в него совпадения в соответствующих комментариях и строках. Visual Assist использует эвристику для определения релевантных обращений, т.е. близость к ссылкам на код.


Включение и исключение ссылок

Используйте контекстное меню диалогового окна "Переименовать", чтобы включить или исключить все ссылки определенного типа.


Отмените выбор записей в списке «Переименовать», чтобы исключить определенные ссылки — в рамках проекта, файла или сайта вызова.

Установите более широкую область действия, например через цепочку наследования или в комментариях, прежде чем исключать определенные записи. Список «Переименовать» обновляется при изменении параметра, влияющего на область; вы потеряете свои исключения при изменении настройки.


Просмотреть ссылки

Дважды щелкните записи в списке результатов, чтобы просмотреть ссылки в вашем источнике. При необходимости визуальный помощник открывает файл, содержащий ссылку, но файл не получает фокус, пока открыто диалоговое окно «Переименовать».

Остановить поиск с переименованием

Вы можете преждевременно прекратить длительные поиски, нажав кнопку "Стоп" в диалоговом окне "Переименовать" или с помощью ярлыка для отмены сборки (Ctrl+Break).


Преждевременно остановить поиск только для изменения области переименования или полностью отменить переименование. Принятие переименования после остановки поиска, скорее всего, приведет к поломке вашего решения.


Показать проекты

Узлы "Проекты" отображаются в списке результатов, если при переименовании был выполнен поиск по всем проектам и найдены ссылки более чем в одном проекте.


Вы можете настроить отображение узлов проекта для всех переименований в диалоговом окне параметров визуального помощника.


Переименовать файлы

Если вы переименуете символ, имя которого идентично имени файла, например, class foo в foo.cpp, Visual Assist предлагает переименовать файлы с одинаковыми именами после завершения переименования символа. По указанию Visual Assist запускает функцию «Переименовать файлы», где у вас есть возможность предварительно просмотреть список файлов, которые нужно переименовать.


Настройка общей области

Настройка переименования во всех проектах используется совместно с командами «Найти ссылки» и «Изменить подпись». Если вы ограничите Rename текущим проектом, область действия следующего Find References или Change Signature также будет ограничена текущим проектом. Если вы расширите область переименования на все проекты, при следующем вызове функций «Найти подпись» или «Изменить подпись» также будет выполнен поиск по всем проектам. Общий параметр предотвращает непреднамеренный рефакторинг ссылок, несовместимых с теми, которые вы просматриваете с помощью функции поиска ссылок.


Переименовать системные символы

Переименование доступно для системных символов, как для символов, определенных в системных включаемых файлах, так и для символов решений, определенных с использованием системных типов.

Переименование системного символа изменяет его ссылки в проекте или решении таким образом, что они ссылаются на другой системный символ. Переименование не меняет определения системного символа. Например, Fox, переименование MessageBoxA может изменить ссылки таким образом, что вместо MessageBoxA будет использоваться MessageBoxW.


Переименование типа системы, используемого в проекте или решении, изменяет ссылки на другой системный символ. Например, переименование std:vector может изменить ссылки таким образом, что вместо std:vector будет использоваться std:set.


Переименование можно отменить (Ctrl+Z), даже если изменение затрагивает несколько файлов в нескольких проектах.

Visual C++ 6.0

Для отмены одного переименования требуется несколько отмен.

Переименовать или изменить подпись

В большинстве случаев используйте Изменить подпись вместо переименования, чтобы изменить имена методов и их параметры. Хотя Rename допустимо, Change Signature проникает глубже в списки параметров объявлений и определений, а также в тела реализаций методов.

Этот рефакторинг позволяет изменить имя любого символа или проекта в вашем решении. Все ссылки на символ и его использование будут обновлены автоматически.

Вот список объектов, которые вы можете переименовать с помощью этого рефакторинга:

Вы также можете изменить уровень вложенности пространства имен. Например, вы можете переименовать пространство имен A.B.C в A.D .

Если переименованный тип находится в файле с таким же именем, ReSharper также переименовывает содержащий его файл.

Если переименованный тип является частью иерархии типов с похожими именами, например class Foo : IFoo , вы сможете выбрать, следует ли переименовывать связанные типы.

Если метод является частью иерархии наследования/реализации, связанные методы также переименовываются.

Если у метода есть перегрузки, вы сможете выбрать, следует ли переименовывать перегрузки.

Если поле используется в свойстве с совпадающим названием, вы сможете выбрать, следует ли переименовывать свойство.

Если свойство имеет вспомогательное поле с совпадающим именем, вы также сможете переименовать это поле.

Если метод является частью иерархии наследования/реализации или имеет перегруженные версии с параметром с таким же именем и типом, вы также сможете переименовывать параметры в связанных методах.

ReSharper переименовывает локальные переменные, не показывая диалоговое окно:

Переименование локальной переменной

Делегат мероприятия

Вызвать рефакторинг с помощью команды

Выберите объект одним из следующих способов:

В редакторе установите курсор на имя объекта.

Выберите объект в обозревателе решений.

Выберите объект в окне «Структура файла».

Выберите объект в представлении класса.

Выберите объект в обозревателе объектов.

Выполните одно из следующих действий:

Нажмите Control + Shift + R, а затем выберите "Переименовать".

Щелкните правой кнопкой мыши и выберите Рефакторинг | Переименовать в контекстном меню.

Выберите ReSharper | Рефакторинг | Переименовать... в главном меню.

Откроется диалоговое окно "Переименовать".

Введите новое имя объекта или используйте одно из предложенных имен.

ReSharper: Рефакторинг переименования

ReSharper предложит новые имена для объекта с учетом вашего стиля именования.

В зависимости от объекта, который вы переименовываете, выберите, какие связанные элементы следует переименовать, например вхождения объекта в комментарии и строковые литералы.

Нажмите "Далее" . Если с переименованными сущностями ничего не связано, ReSharper применяет рефакторинг. В противном случае мастер отобразит дополнительные шаги:

Если есть связанные объекты с похожими именами, они перечислены на следующем шаге:

ReSharper: Рефакторинг переименования

Выберите связанные объекты, которые вы хотите переименовать вместе с выбранным объектом. Вы можете принять предложенные имена или указать новые имена в столбце «Новое имя».

Если вы ранее выбрали Поиск в комментариях и найдены строковые литералы и вхождения имени объекта, они будут перечислены на следующем шаге:

ReSharper: Рефакторинг переименования

Выберите текстовые вхождения, которые вы хотите переименовать в ReSharper.

Если конфликтов не обнаружено, ReSharper немедленно выполняет рефакторинг. В противном случае вам будет предложено разрешить конфликты.

Выполнить рефакторинг на месте

Вы можете переименовать объект, изменив его объявление прямо в редакторе, а затем применив быстрое исправление для вызова рефакторинга всего решения.

Как только вы измените имя объекта при его объявлении, вокруг имени появится серая рамка, уведомляющая о том, что рефакторинг доступен. Вы можете нажать Alt+Enter, чтобы найти рефакторинг в списке действий:

Читайте также: