Сохранение регистра поиска / замены в Visual Studio - PullRequest
28 голосов
/ 15 декабря 2008

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

Что я имею в виду: поиск 'BadJob' и замена на 'GoodJob' сделают следующие замены

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

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

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

Ответы [ 4 ]

5 голосов
/ 28 июля 2015

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

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

http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/7123150-case-preserving-search-replace

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

2 голосов
/ 15 декабря 2008

открыть параметры поиска, когда вы делаете поиск / замену. проверьте чувствительный к регистру вариант. вам придется делать ароматизаторы вручную, если вы не сделаете что-то вроде: 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

0 голосов
/ 30 ноября 2018

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

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

Установка Блокнот ++
Установить скрипт 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 голосов
/ 16 декабря 2008

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

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

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

...