Sublime Text 3中如何保留大小写并替换?

12

通过在Google上搜索,我发现使用Sublime Text似乎是或至少曾经可以实现这一点的。我看到了多个关于在查找和替换面板中有一个保留大小写按钮的引用,它看起来像两个圆形方块重叠在一起。

然而,在我的Sublime Text 3版本(在Mavericks上)中,我根本找不到这个选项...

我还检查了首选项,以查看是否已关闭此选项,但我能找到的唯一参考是:

{ "keys": ["super+alt+a"], "command": "toggle_preserve_case", "context":
    [
        { "key": "setting.is_widget", "operator": "equal", "operand": true }
    ]
},

在默认键映射文件中...

这是我的查找和替换面板的截图:

输入图像描述


这在3059版本和2221版本(在Mavericks上)中也是我所缺少的。我不确定保留大小写选项何时消失了。 - Wizard of Ogz
@WizardofOgz 你有去“查找”菜单并选择“替换…”吗?它应该在那里。我没有意识到它不是“在文件中查找”选项中的选项,而仅适用于单个文件。 - doovers
@WizardofOgz 没问题!很高兴能帮忙 :) - doovers
3个回答

21
在最新的 Sublime 3 版本(3059)中,替换对话框中有一个专门用于保持大小写的图标。当切换它并使用屏幕截图中显示的输入时,以下输入字符串将转换为以下输出结果: 输入: "Xhis is my xest." 输出: "This is my test." enter image description here

就我所见,它在程序员试图保留变量命名时并不起作用。我认为它只是在匹配的每个索引处保留大小写,而不是像在驼峰式、烤肉串式等情况下找到单词边界那样做一些更聪明的事情。 - Andy
2
就此而言,这仅存在于搜索一个文件时:您无法在多个文件上执行此操作。 - SCdF
1
@SCdF 你知道为什么不能使用多个文件吗?那正是我所需要的! - daniatic
需要注意的是(正如SCdF所提到的),这仅适用于单个文件 - 在替换多个文件时不可选。如果能够在多个文件上工作将会很好... - calarin

13

虽然这并不是回答你将近1.5年前问题的确切答案,但也许您(或其他人)会发现以下内容有用:

我编写了一个ST插件,其中包括在编辑多个选择时保留大小写的功能。它甚至可以保留带有分隔符的情况,例如snake_case、dash-case、dot.case等。

它被称为MultiEditUtils。在这里您可以看到所描述的特性。

所讨论的特性


太棒了!如果搜索/替换时保留大小写是默认行为就好了。 - Andy
太棒了,你让我的一天都变得美好了。 - grebenyuksv
有人能提供具体的样例,展示你在哪里应用过吗? 因为我个人无法想象它如何在实际项目中使用。 - tav
有人能提供具体的样例吗?因为我个人无法想象它如何在实际项目中使用。 - tav
2
@tav 考虑为实体(例如“用户”)选择一个特定于域的名称,您想要将其重命名(例如为“员工”)。现在,您可能有几个标识符包含该名称(例如,“userID”变量,“UserManager”类和“USER_GREETING”常量)。由于不同的大小写(变量、类和常量通常具有其他大小写约定),如果您打算重命名变量(为“employeeID”、“EmployeeManager”和“EMPLOYEE_GREETING”),则无法使用简单的搜索和替换。这就是保留功能发挥作用的地方。 - Philipp
1
哇,谢谢你... 直到现在我都不知道我有多需要这个! - ptim

4

看起来可能是ST3中的故障引起了混淆。

我注意到替换的快捷键组合从未出现过令人困惑的问题,并且从查找菜单中选择替换会打开文件中的查找窗格,而不是常规的查找和替换窗格(其中保留大小写按钮在其中)。在安装了ST3的苏打主题后,我才意识到这一点,它在截图中显示了保留大小写按钮。

奇怪的是,当我恢复默认主题时,查找 > 替换菜单现在按照预期工作,并且我发现键盘快捷键被另一个程序捕获,这就是为什么它不能正常工作的原因...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接