在Intellij中,如何在驼峰大小写和下划线间隔之间切换?

Dan*_*lan 94 java coding-style intellij-idea

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

当我问,我也不妨问,如果有办法把historyOfPresentIllnesshistory-of-present-illness.那是从java到clojure风格.

Dan*_*yMo 155

我使用一个名为String Manipulation的插件,它具有您正在寻找的功能(以及更多).

选择historyOfPresentIllness并按Alt+ M以显示插件菜单,然后按:

  • 5- 为了snake_case(或驼峰),其转换成history_of_present_illness
  • 6 - 要连字符的情况下(或snake_case) ,其转换成history-of-present-illness

为了使这更容易,您可以设置快捷方式File | Settings | Keymap.


快速搜索"camel"的插件库显示了一个名为CamelCase的插件,它通过在各种格式之间切换来完成您正在寻找的SHIFT+ ALT+ U.

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

但是,在尝试之后,这个插件似乎存在一个错误,它会阻止您撤消任何更改. 更新:看来这个bug已经修复了一段时间了,所以CamelCase插件可能就是这样.

  • @tieTYT我想到,为了简化第一种方法,你可以录制一个宏`编辑>宏>开始录制宏`,然后为你的宏添加一个简单的键映射`设置>键盘>宏>你的Mac(右键单击) >添加键盘快捷键)` (2认同)

Qam*_*mar 32

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

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

更换: \U$1

按[全部替换]按钮,享受

  • 出于完整性考虑,从camelCase到snake_case:找到([[AZ] {1,1}))并替换为__l $ 1`,同时切换* Regex *和* Match case *选项。 (2认同)

The*_*ith 11

从snake_case 到CamelCase

  • 找: (\w)[_]{1,1}([a-z])
  • 代替: $1\U$2
  • 设置:
    • 相符
    • 正则表达式

从CamelCase到snake_case:

  • 找: ([A-Z])
  • 代替: \_\L$1
  • 设置:
    • 相符
    • 正则表达式

  • 对于您的 CamelCase 到 Snake_case,您最好确保您已选择某些内容。正如所写的,它将把项目中的每个大写字母替换为小写字母并加下划线。这对我来说似乎很糟糕。至少您需要将其限制为“(?<=[az])([AZ])”之类的内容,以仅获取小写字母后面的大写字母。 (2认同)

Raf*_*afe 7

如果您同意 PyCharm 也可以重构用法,请启动“重命名”工具(重构 > 重命名)。弹出带有下拉列表的窗口,您应该在列表中看到文本的 Snake_case 版本(您可以打开窗口并使用按键切换到 Snake_case,这样速度会相当快)。


小智 5

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

查找: (\w)[_]{1,1}([az])

替换: $1\U$2

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

  • “上面”没有意义,因为答案可以排序 - 您的“上面”不是每个人的“上面”,所以请避免使用“上面”或“下面”来描述本网站上的内容,而是给出作者的名字,谢谢 (2认同)