Сохранение регистра поиска / замены в Visual Studio

Кажется, в VisualStudio нет встроенной поддержки поиска / замены с сохранением регистра (см. Также соответствующий запрос функции ).

Я имею в виду: поиск «BadJob» и замена на «GoodJob» сделают следующие замены

'badjob' -> 'goodjob'  
'BadJob' -> 'GoodJob'  
'badJob' -> 'goodJob'  
'BADJOB' -> 'GOODJOB'

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

Обновление:
я знаю, что могу сделать 4 замены вручную, выполняя работу, но я ищу способ сделать это автоматически в VS (как, например, Emacs делает это). Распространенный сценарий: переменная с именем «foo» и некоторые функции DoFoo (), GetFoo (), ... и некоторые дополнительные комментарии, содержащие «foo», «Foo» и т. Д. Теперь переименуйте «foo» в «bar», получив переменную «bar» , функции DoBar (), GetBar () и т. д. по одной найти / заменить.

14.12.2008 22:07:38
Я тоже этого хочу. Будет ли это легко сделать через плагин VS?
Steven Mark Ford 1.06.2017 07:56:10
Вот новая ссылка на upvote для запроса функции: developercommunity.visualstudio.com/content/idea/580810/…
thecoolmacdude 11.12.2019 20:49:57
5 ОТВЕТОВ

откройте параметры поиска, когда вы делаете поиск / замену. проверьте чувствительный к регистру вариант. вам придется делать ароматизаторы вручную, если вы не делаете что-то вроде: http://www.aaronlerch.com/blog/2007/03/28/visual-studio-find-and-replace-regular-expressions/ или используете что-то как: http://www.download3k.com/MP3-Audio-Video/Utilities-Plug-Ins/Download-Find-Replace.html

2
14.12.2008 22:37:11
4 ручных замены с учетом регистра - это именно то, что я НЕ хочу делать. Я ищу «умный» поиск / замену в VS, который делает это автоматически (например, Emacs делает это).
user45637 15.12.2008 08:46:26
thecoolmacdude 12.07.2019 19:24:19

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

Предостережения:
это работает только в рамках текущего решения.
Обновляет только ссылки в управляемом коде.
Он не будет обновлять буквенные строки, такие как «плохой код»,
он не будет обновлять ваши комментарии.

Это одна из моих любимых функций в VS2005 / 2008.

-2
16.12.2008 05:27:07
Это применимо, только если вы используете язык .NET и на самом деле не является функцией, если вы используете C ++.
jheriko 16.07.2009 08:18:28
Вы можете подать запрос на поддержку функции сохранения дел для Visual Studio здесь: developercommunity.visualstudio.com/content/idea/580810/…
thecoolmacdude 6.09.2019 18:52:45

Это невозможно в Visual Studio на данный момент.

Вы можете проголосовать за эту функцию:

https://developercommunity.visualstudio.com/content/idea/580810/case-preserving-search-replace.html

Я обычно заканчиваю тем, что открываю Sublime Text, копирую и вставляю туда код, выполняю там замены с сохранением регистра и копирую и вставляю обратно в Visual Studio.

8
13.07.2019 09:07:51

Вот как я справился с этим:

Откройте файл в Notepad ++ и запустите скрипт на python, который заменяет ведение регистра (как мы привыкли делать с макросами Visual Studio ... ах, потеря)

Установить Notepad ++
Установить скрипт npp python
Создайте новый скрипт следующим образом:

from Npp import *

#Use capitalizeFirst because .capitalize will make the remaining string lower, but in CamelCase examples 
#we will want to preserve the user-typed casing. e.g. YourMonkeyMagic -> MyMonkieMagik 
def capitalizeFirst(str):
    return '%s%s' % (str[:1].upper(), str[1:])

#***  Ask user what to find and replace ***
find_str=notepad.prompt(notepad, 'Find (keeping case)', '')
replace_str=notepad.prompt(notepad, 'Replace (keeping case)', '')

#*** Do a case-sensitive replacement on each type ***
editor.replace(find_str.upper(), replace_str.upper())
editor.replace(find_str.lower(), replace_str.lower())
editor.replace(capitalizeFirst(find_str), capitalizeFirst(replace_str))
editor.replace(find_str, replace_str)
0
30.11.2018 14:26:36
Поддержите запрос функции для Visual Studio здесь: developercommunity.visualstudio.com/content/idea/580810/…
thecoolmacdude 6.09.2019 18:49:42

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

Подробности можно найти здесь (скопировано ниже):

Сохранить регистр в Найти и заменить

Теперь вы можете сохранить регистр при выполнении замены в виджете поиска редактора. Эта функция включается, когда включена опция «Сохранить регистр» (кнопка AB) в окне ввода «Заменить» редактора.

кнопка

В настоящее время VS Code поддерживает только сохранение полного верхнего регистра , полного нижнего регистра и заглавного регистра .

пример

2
3.09.2019 04:13:45
Поддержите запрос функции для Visual Studio здесь: developercommunity.visualstudio.com/content/idea/580810/…
thecoolmacdude 6.09.2019 18:49:36
О, ох, я даже не заметил, вопрос был о визуальной студии, а не о коде.
spacetyper 8.09.2019 06:06:01