Trong Intellij, làm cách nào để chuyển đổi giữa trường hợp lạc đà và khoảng cách giữa dấu gạch dưới?


108

Tại công ty của tôi, chúng tôi có hai hướng dẫn kiểu khác nhau cho java và sql. Trong java, tôi có một trường được đặt tên historyOfPresentIllnessvà khi tôi viết sql, tôi muốn đặt tên cho nó history_of_present_illness. Có phím tắt nào để chuyển từ cái này sang cái kia khi tôi đánh dấu cụm từ không? Hoặc có lẽ một plugin có thể làm điều này?

Trong khi tôi đang hỏi, tôi cũng có thể hỏi nếu có cách để chuyển historyOfPresentIllnesssang history-of-present-illness. Đó là từ java sang phong cách clojure.

Câu trả lời:


185

Tôi sử dụng một plugin có tên là String Manipulation có các tính năng mà bạn đang tìm kiếm (và hơn thế nữa).

Chọn historyOfPresentIllnessvà nhấn Alt+ Mđể hiển thị menu plugin, sau đó nhấn:

  • 5- Thành solid_case (hoặc sang camelCase) sẽ chuyển đổi thànhhistory_of_present_illness
  • 6 - Thành dấu gạch ngang-hoa (hoặc thành chữ_bắn) chuyển đổi thànhhistory-of-present-illness

Để làm cho việc này dễ dàng hơn, bạn có thể thiết lập phím tắt tại File | Settings | Keymap.


Tìm kiếm nhanh kho lưu trữ plugin cho "lạc đà" đã cho thấy một plugin có tên là CamelCase thực hiện chính xác những gì bạn đang tìm kiếm với SHIFT+ ALT+ Ubằng cách chuyển đổi giữa các định dạng khác nhau:

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

Tuy nhiên, sau khi dùng thử, dường như có một lỗi với plugin này khiến bạn không thể hoàn tác bất kỳ thay đổi nào. Cập nhật: có vẻ như lỗi này đã được sửa một thời gian, vì vậy plugin CamelCase có lẽ là cách để đi.


1
@tieTYT Vâng, khá là khó chịu vì bạn nhận được một thông báo bật lên cho biết rằng tệp có những thay đổi không thể hoàn tác ... nếu không có điều đó, đó sẽ là lựa chọn thuận tiện hơn.
DannyMo

2
@tieTYT Chỉ cần xảy ra với tôi rằng để đơn giản hóa cách tiếp cận đầu tiên, bạn có thể ghi lại một macro Edit > Macros > Start recording macrovà sau đó thêm một key-bản đồ đơn giản cho macro của bạnSettings > Keymap > Macros > YourMacro (right-click > Add Keyboard Shortcut)
DannyMo

String Manipulation hiện cũng chứa các hành động để chuyển đổi giữa tất cả các loại trường hợp ... Bạn có thể thiết lập một phím tắt cho bất kỳ hành động nào (có quá nhiều trong số chúng nên có một số trường hợp mặc định).
Meo

@DannyMo - Đối với tôi, nó 5dành cho SCREAMING_SNAKE_CASEJdành cho Trim all spaces. Sử dụng Mac OS X 10.10.5, PhpStorm 10.0.1, Thao tác chuỗi 4.1.135.445.1.
Pang

Tôi có thể khẳng định rằng các plugin CamelCase hoạt động tốt với IntelliJ 2016/02/03
Wim Deblauwe

45

Nhấn rất đơn giản Clr + Fđể mở bảng Find / Replace và kiểm tra [✓] Regex sao chép regex trước đây

Tìm thấy: [_]{1,1}([a-z])

Thay thế: \U$1

Nhấn nút [Thay thế tất cả], Thưởng thức


Cảm ơn @piotrek cho _some_awe_varđến_someAweVar

Sử dụng Tìm: (\w)[_]{1,1}([a-z])
Thay thế:$1\U$2


2
Chỉ vì lợi ích hoàn chỉnh, từ camelCase đến solid_case: tìm ([A-Z]{1,1})và thay thế bằng _\l$1, với cả tùy chọn tùy chọn trường hợp RegexMatch được bật tắt.
dic19

Điều này thật tuyệt nhưng trong TypeScript, các thành viên private thường bắt đầu bằng dấu _và điều này sẽ khiến chúng bắt đầu được viết hoa.
Stack Underflow

1
@StackUnderflow sử dụng Tìm: (\w)[_]{1,1}([a-z]) Thay thế: $1\U$2
Qamar

7

Từ solid_case đến CamelCase

  • Tìm thấy: (\w)[_]{1,1}([a-z])
  • Thay thế: $1\U$2
  • Cài đặt:
    • Trường hợp phù hợp
    • Regex

Từ CamelCase đến solid_case:

  • Tìm thấy: ([A-Z])
  • Thay thế: \_\L$1
  • Cài đặt:
    • Trường hợp phù hợp
    • Regex

3

Câu trả lời ở trên gần như hoàn hảo, nhưng lưu ý rằng nó sẽ thay đổi các biến như _somethinghoặc this._somethingthành Somethingthis.Something. Tôi không muốn điều đó trong trường hợp của mình, vì _ hàng đầu được sử dụng để biểu thị các biến "riêng tư" (dự án JS cũ). Tôi đã sửa đổi một chút cách tiếp cận này:

Tìm: (\ w) [_] {1,1} ([az])

Thay thế: $ 1 \ U $ 2

Điều này sẽ đảm bảo rằng chỉ các biến có _ở giữa mới bị ảnh hưởng.


1
"bên trên" là vô nghĩa vì câu trả lời có thể được sắp xếp - "bên trên" của bạn không phải là "bên trên" của mọi người, vì vậy vui lòng tránh sử dụng "bên trên" hoặc "bên dưới" để mô tả nội dung trên trang web này, thay vào đó hãy cung cấp tên tác giả, cảm ơn
Eric Aya

Các "ở trên" câu trả lời tham chiếu là @Qamar
stack underflow

0

Nếu bạn đồng ý với việc PyCharm cũng đang cấu trúc lại tập quán, hãy khởi chạy công cụ "Đổi tên" (Refactor> Rename). Cửa sổ bật lên với danh sách thả xuống và bạn sẽ thấy phiên bản solid_case của văn bản trong danh sách (bạn có thể mở cửa sổ và chuyển sang solid_case bằng các phím bấm để có thể khá nhanh).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.