在Visual Studio中保留查找/替换的大小写

时间:2008-12-14 22:07:38

标签: visual-studio visual-studio-2008 visual-studio-addins

在VisualStudio中似乎没有内置支持保存查找/替换的情况(另请参阅相应的feature request)。

我的意思是:搜索'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重命名。

5 个答案:

答案 0 :(得分:5)

目前在Visual Studio中

您可以投票支持此功能:

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

我通常最终会打开Sublime Text,Copy&将代码粘贴到那里,在那里执行保留大小写的替换,然后复制&粘贴回Visual Studio。

答案 1 :(得分:2)

执行查找/替换时打开查找选项。检查区分大小写的选项。除非您执行以下操作,否则您必须手动执行这些操作: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 :(得分:2)

现在可以进行保留大小写的查找和替换,尽管仅适用于所有大写字母,所有小写字母或标题字母(因此在您的特定示例中无效)。

详细信息可以found here(在下面复制):

  

在“查找和替换”中保留大小写

     

现在,您可以在编辑器的“查找”小部件中进行替换时保留大小写。在编辑器的“替换”输入框中打开“保留大小写”选项(AB按钮)时,该功能将打开。

     

button

     

当前VS Code仅支持保留完全大写完全小写标题大写

     

example

答案 3 :(得分:0)

这是我应付(解决)的方式:

在Notepad ++中打开文件,然后运行一个进行大小写替换的python脚本(就像我们以前能够使用Visual Studio宏一样...啊,丢失了)

安装Notepad++
安装npp python script
这样创建一个新脚本:

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)

答案 4 :(得分:-2)

我知道这并没有完全按照您的要求回答您的问题,但是对于重命名变量和方法名称,您可以通过右键单击标识符并使​​用快捷菜单上的重命名选项来避免整个问题。这将更新对该变量或方法名称的任何引用。

警告:
它仅适用于当前解决方案的范围。
它仅更新托管代码中的引用。
它不会更新诸如“badcode”之类的文字字符串 它不会更新您的评论。

这是VS2005 / 2008中我最喜欢的功能之一。