VisualStudio 中似乎没有对大小写保留查找/替换的内置支持(另请参阅相应的功能请求)。
我的意思是:搜索“BadJob”并替换为“GoodJob”将进行以下替换
'badjob' -> 'goodjob'
'BadJob' -> 'GoodJob'
'badJob' -> 'goodJob'
'BADJOB' -> 'GOODJOB'
所以我正在寻找一个宏/插件来实现保留大小写的查找/替换。如果不存在,那么我自己编写的一个好的起点是什么(最好基于内置的查找/替换功能)。
更新:
我知道我可以进行 4 个手动替换来完成这项工作,但我正在寻找一种在 VS 中自动完成这项工作的方法(就像 Emacs 所做的那样)。
常见场景:名为“foo”的变量和一些函数 DoFoo()、GetFoo()...以及一些包含“foo”、“Foo”等的附加注释。
现在将“foo”重命名为“bar”,通过 ONE 查找/替换生成变量“bar”、函数 DoBar()、GetBar() 等。
目前在 Visual Studio 中不可能。
您可以投票支持此功能:
https://developercommunity.visualstudio.com/content/idea/580810/case-preserving-search-replace.html
我通常最终打开 Sublime Text,复制并粘贴代码,在那里执行保留大小写的替换,然后复制并粘贴回 Visual Studio。
执行查找/替换时打开查找选项。检查区分大小写的选项。您必须手动进行口味调整,除非您执行以下操作: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
现在可以进行保留大小写的查找和替换,尽管仅适用于所有大写、所有小写或标题大小写(因此它不适用于您的特定示例)。
详情可以在这里找到(复制在下面):
在查找和替换中保留大小写
您现在可以在编辑器的“查找”小部件中进行替换时保留大小写。当编辑器的替换输入框中的保留大小写选项(AB 按钮)打开时,该功能就会打开。
目前 VS Code 仅支持保留 全大写、全小写和标题大小写。
这就是我应对的方法:
在 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)
自 2023 年 8 月 9 日起在 Visual Studio 2022 17.8 预览版中引入。
我知道这并不能完全按照您的要求回答您的问题,但是对于重命名变量和方法名称,您可以通过右键单击标识符并使用快捷菜单上的重命名选项来避免整个问题。这将更新对该变量或方法名称的任何引用。
注意事项:
它仅适用于当前解决方案的范围。
它仅更新托管代码中的引用。
它不会更新诸如“badcode”之类的文字字符串
它不会更新您的评论。
这是 VS2005/2008 中我最喜欢的功能之一。