【问题标题】:In Intellij, how do I toggle between camel case and underscore spaced?在 Intellij 中,如何在驼峰大小写和下划线分隔之间切换?
【发布时间】:2013-06-27 18:12:49
【问题描述】:

在我的公司,我们有两种不同的 java 与 sql 风格指南。在java中,我有一个名为historyOfPresentIllness的字段,当我编写sql时,我想将其命名为history_of_present_illness。当我突出显示该短语时,是否有键盘快捷键可以从一个切换到另一个?或者也许是一个可以做到这一点的插件?

在我问的时候,我不妨问一下是否有办法将historyOfPresentIllness 变成history-of-present-illness。那是从java到clojure风格。

【问题讨论】:

    标签: java coding-style intellij-idea


    【解决方案1】:

    两个插件提供此功能:

    我使用了一个名为 String Manipulation 的插件,它可以满足您的需求(以及更多)。

    选择historyOfPresentIllness并按Alt / option+M调出插件菜单,然后按:

    • 5 - 转为snake_case(或转为camelCase),转换为history_of_present_illness
    • 6 - 连字符大小写(或蛇形大小写) 转换为history-of-present-illness

    为了简化此操作,您可以在File | Settings | Keymap 设置一个快捷方式。


    还有 [CamelCase][3] 插件。

    SHIFT+Alt / option+U 切换格式之间的选择:

    historyOfPresentIllness --> history_of_present_illness --> HISTORY_OF_PRESENT_ILLNESS --> HistoryOfPresentIllness --> historyOfPresentIllness

    您还可以撤消更改(现在插件中的错误已得到修复)。

    【讨论】:

    • @tieTYT 是的,这很烦人,因为您会收到一条弹出消息,告诉您文件有无法撤消的更改...如果不是这样,那将是更方便的选择.
    • @tieTYT 我突然想到,为了简化第一种方法,您可以录制一个宏 Edit > Macros > Start recording macro,然后为您的宏添加一个简单的键映射 Settings > Keymap > Macros > YourMacro (right-click > Add Keyboard Shortcut)
    • 字符串操作现在还包含在各种情况之间切换的操作...您可以设置任何操作的快捷方式(它们太多,无法设置默认值)。
    • 哦,没关系!只需单击(或创建宏):SHIFT + F6(重构),然后使用其中一个插件更改大小写,然后按 ENTER。
    • 这个插件真的很棒;像魅力一样工作:)
    【解决方案2】:

    非常简单的按Clr + F打开查找/替换面板并检查[✓]正则表达式复制过去的正则表达式

    查找: [_]{1,1}([a-z])

    替换:\U$1

    按下[全部替换]按钮,尽情享受


    感谢@piotrek _some_awe_var_someAweVar

    使用查找:(\w)[_]{1,1}([a-z])
    替换:$1\U$2

    【讨论】:

    • 为了完整起见,从camelCase 到snake_case:找到([A-Z]{1,1}) 并替换为_\l$1,同时使用RegexMatch case 选项切换。
    • 这很好,但在 TypeScript 中,私有成员通常以 _ 开头,这将使它们开始大写。
    • @StackUnderflow 使用 查找: (\w)[_]{1,1}([a-z]) 替换: $1\U$2
    • 我想“非常简单”是讽刺,不是吗?我从接受的答案中选择了 String Manipulation 插件:)
    • 我认为 (\w)_([a-z]) 会更简单?不需要 [ ] 和 { } 只需一个符号。
    【解决方案3】:

    从snake_case到CamelCase

    • 查找:(\w)[_]{1,1}([a-z])
    • 替换:$1\U$2
    • 设置:
      • 火柴盒
      • 正则表达式

    从 CamelCase 到 snake_case:

    • 查找:([A-Z])
    • 替换:\_\L$1
    • 设置:
      • 火柴盒
      • 正则表达式

    【讨论】:

    • 对于您的 CamelCase 到 snake_case,您最好确保选择了一些东西。正如所写的那样,它将把项目中的每个大写字母替换为小写字母,并带有下划线。这对我来说似乎很糟糕。至少您需要将其限制为 (?<=[a-z])([A-Z]) 之类的内容,以仅获取小写字母后的大写字母。
    • 谢谢!刚刚从数据库模式中复制了很多snake_case 字段,使用它确实为我节省了一些时间。特别棒的是,您可以手动浏览每场比赛
    • 如何使camelCase 适应snake_case 解决方案,以便它可以在XML 上下文中使用?例如:从<addPrimaryKey columnNames="somethingLikeThis"/><addPrimaryKey columnNames="something_like_this"/>
    【解决方案4】:

    上面的答案几乎是完美的,但请注意,它会将_somethingthis._something 等变量更改为Somethingthis.Something。在我的情况下,我不希望这样,因为前导 _ 用于表示“私有”变量(旧 JS 项目)。我稍微修改了这个方法:

    查找: (\w)[_]{1,1}([a-z])

    替换: $1\U$2

    这将确保只有_ 位于中间的变量才会受到影响。

    【讨论】:

    • "above" 没有意义,因为答案是可以排序的——您的“above”不是每个人的“above”,所以请避免使用“above”或“below”来描述本网站上的内容,而是给出作者姓名,谢谢
    • 引用的“以上”答案是@Qamar
    【解决方案5】:

    如果您对 PyCharm 还重构用法没问题,请启动“重命名”工具(重构 > 重命名)。窗口会弹出下拉列表,您应该会在列表中看到snake_case 版本的文本(您可以打开窗口并通过击键切换到snake_case,这样会非常快)。

    【讨论】:

      猜你喜欢
      • 2021-04-27
      • 1970-01-01
      • 2016-08-07
      • 1970-01-01
      • 2010-12-03
      • 1970-01-01
      • 2020-01-08
      • 2017-06-16
      • 2018-12-18
      相关资源
      最近更新 更多