ใน Intellij ฉันจะสลับระหว่างเคสอูฐและขีดล่างเว้นระยะห่างได้อย่างไร


110

ที่ บริษัท ของฉันเรามีคำแนะนำรูปแบบที่แตกต่างกันสองแบบสำหรับ java กับ sql ใน java ฉันมีชื่อฟิลด์historyOfPresentIllnessและเมื่อฉันเขียน sql ฉันต้องการตั้งชื่อhistory_of_present_illnessที่ฉันต้องการที่จะตั้งชื่อมันว่า มีแป้นพิมพ์ลัดที่จะเปลี่ยนจากแป้นพิมพ์หนึ่งไปเป็นอีกแป้นหนึ่งเมื่อฉันไฮไลต์วลีหรือไม่ หรืออาจเป็นปลั๊กอินที่สามารถทำสิ่งนี้ได้?

ในขณะที่ฉันกำลังถามฉันก็อาจจะถามว่ามีทางที่จะหันhistoryOfPresentIllnessไปhistory-of-present-illnessไหม นั่นคือตั้งแต่ java จนถึงสไตล์ clojure

คำตอบ:


188

ฉันใช้ปลั๊กอินที่เรียกว่าString Manipulationซึ่งมีความสามารถที่คุณกำลังมองหา (และอื่น ๆ )

เลือกhistoryOfPresentIllnessและกดAlt+ Mเพื่อเปิดเมนูปลั๊กอินจากนั้นกด:

  • 5- เป็นsnake_case (หรือเป็น camelCase)ซึ่งแปลงเป็นไฟล์history_of_present_illness
  • 6 - ถึงยัติภังค์ (หรืองู _ เคส)ซึ่งแปลงเป็นhistory-of-present-illness

File | Settings | Keymapนี้เพื่อให้ง่ายขึ้นคุณสามารถตั้งค่าทางลัดที่


การค้นหาที่เก็บปลั๊กอินสำหรับ "อูฐ" อย่างรวดเร็วแสดงให้เห็นปลั๊กอินที่เรียกว่าCamelCaseซึ่งทำสิ่งที่คุณกำลังมองหาด้วยSHIFT+ ALT+ Uโดยการสลับระหว่างรูปแบบต่างๆ:

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

อย่างไรก็ตามหลังจากทดลองใช้ดูเหมือนว่าจะมีข้อบกพร่องกับปลั๊กอินนี้ซึ่งทำให้คุณไม่สามารถยกเลิกการเปลี่ยนแปลงใด ๆ ได้ อัปเดต:ดูเหมือนว่าข้อบกพร่องนี้ได้รับการแก้ไขมาระยะหนึ่งแล้วดังนั้นปลั๊กอิน CamelCase น่าจะเป็นวิธีที่จะไป


1
@tieTYT ใช่มันค่อนข้างน่ารำคาญเพราะคุณได้รับข้อความป๊อปอัปแจ้งว่าไฟล์มีการเปลี่ยนแปลงที่ไม่สามารถยกเลิกได้ ... ถ้าไม่เป็นเช่นนั้นมันจะเป็นทางเลือกที่สะดวกกว่า
DannyMo

2
@tieTYT เพิ่งเกิดขึ้นกับฉันเพื่อทำให้แนวทางแรกง่ายขึ้นคุณสามารถบันทึกมาโครEdit > Macros > Start recording macroจากนั้นเพิ่มการแมปคีย์แบบง่ายสำหรับมาโครของคุณSettings > Keymap > Macros > YourMacro (right-click > Add Keyboard Shortcut)
DannyMo

ตอนนี้การจัดการสตริงยังมีการดำเนินการเพื่อสลับระหว่างเคสทุกประเภท ... คุณสามารถตั้งค่าทางลัดไปยังการดำเนินการใด ๆ (มีมากเกินไปที่จะมีค่าเริ่มต้นบางอย่าง)
แม้ว

@DannyMo - สำหรับผมมันเป็น5สำหรับSCREAMING_SNAKE_CASEและสำหรับJ Trim all spacesใช้ Mac OS X 10.10.5, PhpStorm 10.0.1, String Manipulation 4.1.135.445.1
ปาง

ฉันสามารถยืนยันได้ว่าปลั๊กอิน CamelCase ทำงานได้ดีกับ IntelliJ 2016.2.3
Wim Deblauwe

46

กดง่ายมากClr + Fเพื่อเปิดแผงค้นหา / แทนที่และเลือก[✓] Regexคัดลอก regex ที่ผ่านมา

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

แทนที่: \U$1

กดปุ่ม [แทนที่ทั้งหมด] เพลิดเพลิน


ขอบคุณสำหรับ @piotrek _some_awe_varไป_someAweVar

ใช้ค้นหา: (\w)[_]{1,1}([a-z])
แทนที่:$1\U$2


2
เพียงเพื่อความสมบูรณ์ตั้งแต่ camelCase ไปจนถึง snake_case: ค้นหา([A-Z]{1,1})และแทนที่โดยโดยสลับตัวเลือก_\l$1ทั้งRegexและMatch case
dic19

สิ่งนี้ยอดเยี่ยม แต่ใน TypeScript สมาชิกส่วนตัวมักจะขึ้นต้นด้วย_และสิ่งนี้จะทำให้พวกเขาเริ่มเป็นตัวพิมพ์ใหญ่
Stack Underflow

1
@StackUnderflow ใช้Find: (\w)[_]{1,1}([a-z]) Replace: $1\U$2
Qamar


3

คำตอบข้างต้นเป็นเกือบสมบูรณ์แบบ แต่ทราบว่ามันจะเปลี่ยนตัวแปรเหมือน_somethingหรือthis._somethingเข้าและSomething this.Somethingในกรณีของฉันฉันไม่ต้องการเช่นนั้นเนื่องจาก _ ใช้เพื่อแสดงตัวแปร "ส่วนตัว" (โครงการ JS เก่า) ฉันแก้ไขแนวทางนี้เล็กน้อย:

ค้นหา: (\ w) [_] {1,1} ([az])

แทนที่: $ 1 \ U $ 2

สิ่งนี้จะช่วยให้มั่นใจได้ว่าตัวแปรที่_อยู่ตรงกลางเท่านั้นที่จะได้รับผลกระทบ


1
"ด้านบน" ไม่มีความหมายเนื่องจากสามารถจัดเรียงคำตอบได้ - "ด้านบน" ของคุณไม่ใช่ "ด้านบน" ของทุกคนดังนั้นโปรดหลีกเลี่ยงการใช้ "ด้านบน" หรือ "ด้านล่าง" เพื่ออธิบายเนื้อหาบนไซต์นี้ แต่ให้ตั้งชื่อผู้แต่งแทนขอบคุณ
Eric Aya

คำตอบ "ข้างต้น" อ้างอิงคือ@Qamar
Stack Underflow

0

หากคุณเห็นด้วยกับ PyCharm ในการปรับโครงสร้างการใช้งานให้เปิดเครื่องมือ "เปลี่ยนชื่อ" (Refactor> Rename) หน้าต่างจะปรากฏขึ้นพร้อมรายการแบบเลื่อนลงและคุณจะเห็นข้อความเวอร์ชัน snake_case ในรายการ (คุณสามารถเปิดหน้าต่างและเปลี่ยนไปใช้ snake_case ด้วยการกดปุ่มเพื่อให้ทำได้เร็วมาก)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.