Xcode ซ้ำ / ลบบรรทัด


128

มาจาก Eclipse และถูกใช้เพื่อทำซ้ำบรรทัดตลอดเวลามันค่อนข้างแปลกที่พบว่า Xcode ไม่มีฟังก์ชันดังกล่าว หรือไม่?

ฉันรู้ว่าเป็นไปได้ที่จะเปลี่ยนการเชื่อมโยงคีย์ทั้งระบบ แต่นั่นไม่ใช่สิ่งที่ฉันทำ



การตั้งค่านี้ใช้ได้กับ 9.2 stackoverflow.com/a/34195483/1348522
Zumry Mohamed

คำตอบ:


91

ประเด็นทั้งหมดคือไม่ใช้Cmd-C/ Cmd-Vทางลัด ฉันมีปัญหาเดียวกันที่มาจาก IntelliJ และความสามารถในการทำซ้ำบรรทัดCmd-Dและลบออกด้วยCmd-Yเป็นการประหยัดเวลามาก

มันทำให้ฉันรู้สึกแย่ตั้งแต่นั้นมา อย่างไรก็ตามดูเหมือนว่ามีคนอื่นพบวิธีแก้ปัญหาที่ได้ผล

กล่าวโดยย่อคือสร้างไฟล์ที่~/Library/KeyBindings/PBKeyBinding.dictมีเนื้อหาต่อไปนี้และรีสตาร์ท Xcode

{
    "^$K" = (
        "selectLine:",
        "cut:"
    );

    "^$D" = (
        "selectLine:",
        "copy:",
        "moveToEndOfLine:",
        "insertNewline:",
        "paste:",
        "deleteBackward:"
    );
}

สิ่งนี้จะสร้างทางลัดสองทาง: Ctrl- Shift- KสำหรับการลบบรรทัดปัจจุบันและCtrl- Shift- Dสำหรับการทำซ้ำบรรทัดปัจจุบัน โปรดทราบว่าสิ่งนี้จะใช้ได้เฉพาะเมื่อคุณไม่ได้ใช้ชุดการผูกคีย์แบบกำหนดเองใน Xcode เปลี่ยนเป็น "XCode Default" และสิ่งต่างๆควรใช้งานได้ ทดสอบกับ XCode 3.2 บน Snow Leopard

ข้อมูลเพิ่มเติมเกี่ยวกับการผูกคีย์ Mac OS X: http://funkworks.blogspot.it/2013/03/republishing-of-wwwerasetotheleftcompos.html


5
นี่น่าจะเป็นคำตอบที่แท้จริง Btw - หากคุณต้องการนำเข้าทางลัด cmd-d (ลบบรรทัด) จาก Eclipse คุณจะต้องเปลี่ยนทางลัดเพิ่มบุ๊กมาร์กก่อนในเมนูแก้ไขใน XCode
Chris R

@joshperry อะไรก็ได้ที่ทำงานกับ Xcode 4+? Duplicateคำสั่ง (ในEdit -> Duplicate) ดูเหมือนว่าจะ "เสมอ" สีเทา (และไม่ได้หมายความว่าการทำซ้ำบรรทัด)
Blaz

ฉันใช้ OS X มาตั้งแต่วันแรกและไม่เคยรู้เกี่ยวกับการผูกคีย์เลย ช่างเป็นคุณสมบัติที่ยอดเยี่ยม ลองดูที่นี้ดีมากที่สำคัญบรรณาธิการ GUI ผูกผมเกิดขึ้นเมื่อ
Alex Grey

พบข้อมูลเพิ่มเติมเกี่ยวกับเว็บไซต์ของนักพัฒนาแอปเปิ้ล
aleclarson

ฟังดูดี แต่ดูเหมือนว่ามันไม่ได้ผลสำหรับฉันใน Xcode 5.0.2 :(
voghDev

105

ในการลบบรรทัด : Ctrl-Aไปที่จุดเริ่มต้นของบรรทัดจากนั้นCtrl-Kเพื่อลบและอีกครั้งCtrl-Kเพื่อลบบรรทัดว่าง (ฉันไม่ได้ใช้ Xcode บ่อยนัก แต่ฉันคุ้นเคยกับสิ่งนั้นใน Emacs และอินพุตข้อความอื่น ๆ ที่มีการผูกแบบ Emacs และดูเหมือนว่าจะทำงานใน Xcode ด้วย)

และในการทำซ้ำบรรทัด : ฉันไม่รู้ว่ามีหลายโปรแกรมที่มีคำสั่งสำหรับสิ่งนั้น แต่โดยปกติฉันจะใช้ Copy + Paste - ใน Xcode จะเป็นเหมือน CUA: Ctrl+Aเพื่อไปที่จุดเริ่มต้นของบรรทัดShift+เพื่อเลือก มันCommand + Cเพื่อคัดลอกและCommand + * Vเพื่อวางสองครั้ง (หนึ่งครั้งแทนที่บรรทัดและเมื่อผนวกเข้าด้วยกัน)

(จากคนที่พิมพ์และแก้ไขข้อความตลอดเวลาบ่อยครั้งในโปรแกรมต่าง ๆ และบางครั้งก็รู้สึกโกรธที่ต้องหันเหความสนใจของตัวเองด้วยวิดเจ็ตใบ้ในขณะที่ทำการแก้ไขเล็กน้อยในการป้อนข้อความเขาไม่สามารถหลีกเลี่ยงการจดจำลำดับเหล่านี้ได้ และนิสัย)


3
สิ่งนี้จะทำงานในแอปพลิเคชันทั้งหมดที่ใช้ Cocoa สำหรับการป้อนข้อความเนื่องจากเป็นคุณลักษณะของระบบข้อความโกโก้ มีทางลัดอื่น ๆ อีกมากมายเช่นนี้เป็นรายการของพวกเขาสามารถพบได้ที่นี่: hcs.harvard.edu/~jrus/Site/System%20Bindings.html :)
Ahti

2
"yank" ควรเป็น ctrl + Y ใน Mac ยุคใหม่
CarmeloS

Command-V เพื่อวางและเยื้องใหม่ Control -Y จะวาง แต่จะไม่เยื้องข้อความที่วางซ้ำ
Scott Gardner

77

ลบบรรทัดเช่น eclipse CTRL+ D(ทดสอบบน Xcode 4.5.1):

ก่อนอื่นเปลี่ยนสิทธิ์เหล่านี้:

sudo chmod 666 /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet.plist

sudo chmod 777 /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/

เปิด/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet.plistด้วย Xcode และเพิ่มรายการใหม่นี้:

deleteToBeginningOfLine:, moveToEndOfLine:, deleteToBeginningOfLine:, deleteBackward:, moveDown:, moveToBeginningOfLine:

ป้อนคำอธิบายภาพที่นี่

รีสตาร์ท Xcode และเปิด Xcode> การตั้งค่า> KeyBindings ค้นหามาโครของคุณและกำหนดคีย์ลัด:

ป้อนคำอธิบายภาพที่นี่


5
หากคุณต้องการเพิ่มวิธีในการทำสำเนาบรรทัดให้ทำเช่นเดียวกัน แต่เมื่อวางค่าใหม่ในไฟล์ IDETextKeyBindingSet.plist ให้วางโค้ดนี้ "selectLine :, copy :, moveToEndOfLine :, insertNewline :, paste :, deleteBackward: "
jollyr0ger

+1 โซลูชันนี้ใช้ได้ แต่ใน Xcode 4.6.1 ^ D ขัดแย้งกับการผูกคีย์อื่น ๆ ที่มีอยู่
bernardn

คุณจะได้รับสิ่งนั้นสำหรับ 'รายการปัจจุบันที่ซ้ำกัน' ได้อย่างไร
Markus

สิ่งนี้ไม่ทำงานใน xcode 6 มีการเรียกใช้ฟังก์ชันแรกจากรายการเท่านั้น
Mrug

1
ฉันชอบมันใช้งานได้ดีสำหรับฉันภายใต้ XCode 6.3.1
fwielstra

9

ฉันลองใช้โซลูชันการผูกคีย์ แต่ไม่สามารถใช้งานได้ อย่างไรก็ตามการแก้ไขการผูกคีย์ XCode ของฉันทำงานได้อย่างมีเสน่ห์ นี่คือวิธีที่ฉันทำ

โซลูชันนี้ไม่ได้เปลี่ยนแปลงเนื้อหาของคลิปบอร์ด!

เปิดการเชื่อมโยงคีย์ XCode:

ข้อความแสดงแทน

ในกล่องโต้ตอบแก้ไขสคริปต์ผู้ใช้:

  1. ทำสำเนาสคริปต์ "Move Line Down" และเปลี่ยนชื่อ
  2. ทำสำเนาไฟล์ "Move Line Down.scpt" เปลี่ยนชื่อสคริปต์เลือกไฟล์ผ่าน (ดับเบิลคลิก) ใน Script Editor
  3. แก้ไขสคริปต์ (เปิด "AppleScript Editor") และลบข้อความ "ลบ (ย่อหน้าเริ่มบรรทัดถึง endLine)"
  4. หากคุณไม่ต้องการรีสตาร์ท XCode ดูเหมือนว่าคุณจะต้องลบและเพิ่มสคริปต์ใหม่ ตรวจสอบให้แน่ใจว่าคุณได้ตั้งค่า "Output" เป็น "Discard Output" มิฉะนั้นคุณจะมี "(null)" ในไฟล์ต้นฉบับของคุณ
  5. ฉันแก้ไขสคริปต์เล็กน้อยอีกเล็กน้อยเพื่อให้เลือกบรรทัดที่ถูกต้อง:

รายการที่ซ้ำกัน:

using terms from application "Xcode"
tell first text document
    set {startLine, endLine} to selected paragraph range

    if startLine > 1 then
        set theText to (paragraphs startLine through endLine)
        set theText to (theText as string)
        make new paragraph at beginning of paragraph (startLine) with data theText
        set selected paragraph range to {endLine + 1, endLine + endLine - startLine + 1}
    else
        beep 1
    end if
end tell
end using terms from

ซ้ำบรรทัดลง:

using terms from application "Xcode"
tell first text document
    set {startLine, endLine} to selected paragraph range
    if endLine < (count paragraphs) then
        set theText to (paragraphs startLine through endLine)
        set theText to (theText as string)
        (* delete (paragraphs startLine through endLine) *)
        make new paragraph at beginning of paragraph (endLine + 1) with data theText
        set selected paragraph range to {startLine, endLine}
    else
        beep 1
    end if
end tell
end using terms from

ข้อความแสดงแทน


2
ไม่ได้กล่าวถึงอย่างชัดเจนข้างต้นมีสคริปต์ที่มีอยู่สำหรับ Delete Line, Move Line Up และ Move Line Down คำตอบที่ยอมรับมีข้อเสียคือจะใช้งานได้ก็ต่อเมื่อคุณตั้งค่าการเชื่อมโยงคีย์เป็น XCode Default การใช้สคริปต์ช่วยให้คุณสามารถรักษาการเชื่อมโยงคีย์ที่กำหนดเองได้เนื่องจากการเชื่อมโยงคีย์สำหรับสคริปต์จะได้รับการจัดการแยกจากส่วนที่เหลือของ XCode
Pathogen

7

ตกลงฉันทำงานนี้ไปสักพักแล้วจู่ๆมันก็แตก ตอนนี้ฉันได้รวมจากโพสต์ต่างๆที่นี่และพบวิธีแก้ปัญหาที่ใช้ได้กับ XCode 6.3.1

  1. ไปที่/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Finder

  2. ค้นหาโฟลเดอร์ชื่อ Resources คลิกขวาแล้วกดรับข้อมูลปลดล็อกการตั้งค่าการแชร์และการอนุญาต (โดยการกดล็อก) และตั้งค่าเป็นอ่านและเขียนสำหรับทุกคน

  3. เข้าสู่โฟลเดอร์และค้นหาไฟล์ IDETextKeyBindingSet.plist คลิกขวาแล้วกดรับข้อมูลปลดล็อกการตั้งค่าการแชร์และการอนุญาต (โดยการกดล็อก) และตั้งค่าเป็นอ่านและเขียนสำหรับทุกคน

  4. เปิดไฟล์ด้วย XCode (ค่าเริ่มต้น)

  5. ค้นหาการลบคลิกขวาแล้วเพิ่มแถวใหม่ ตั้งชื่อเช่น Delete Line ในฟิลด์ค่าพิมพ์: selectLine:, deleteBackward:. (นี่ยังสามารถทำได้สำหรับสายที่ซ้ำกัน: selectLine:,copy:,moveToEndOfLine:,insertNewline:,paste:,deleteBackward:)

  1. เริ่ม XCode ไปที่การตั้งค่า / การเชื่อมโยงคีย์และค้นหา Delete Line ตั้งค่าทางลัด สนุก.

6

เนื่องจาก Xcode 4 ทำให้ยากต่อการใช้งานโดยใช้การผูกคีย์ฉันจึงหันไปใช้Keyboard Maestro ( Quickeysควรทำงานได้ดีเช่นกัน แต่ไม่สามารถใช้งานร่วมกับ Lion ได้อย่างสมบูรณ์) ตัวอย่างเช่นนี่คือแป้นพิมพ์ลัด Maestro ของฉัน (เชื่อมโยงกับ⌘-⇧-D):

http://bit.ly/thC6yf


3
"ซื้อตอนนี้ราคา 36 เหรียญ" ... ช่างเป็นอะไรที่ขโมย) ฮ่า ๆ ... จนกระทั่งฉันได้เห็นสิ่งนี้ในเว็บไซต์ Maestro ฉันคิดว่ามันอาจจะเป็นทางออกที่ดี
ycomp

@ycomp นี่เป็นวิธีการแก้ปัญหาฟรี
Blaz

5

ในการลบ Line ใน Xcode 10.1 โปรดทำตามขั้นตอนของภาพหน้าจอด้านล่างเพื่อเพิ่มคีย์ลัด

ป้อนคำอธิบายภาพที่นี่


5

ฉันรู้ว่าเธรดนี้ค่อนข้างเก่า แต่ฉันพบวิธีแก้ปัญหาอื่นโดยใช้BetterTouchToolคุณสามารถรันลำดับCtrl+ A, Ctrl+ K, Ctrl+ Kในทางลัดเดียวโดยกำหนดค่าเช่นนี้ใน BTT:

ป้อนคำอธิบายภาพที่นี่

(ใช้ปุ่มแนบการดำเนินการเพิ่มเติมเพื่อต่อท้ายทางลัดที่สองและสาม)

PS: มาจาก Eclipse โดยที่Cmd+ Dลบบรรทัด ^^


4

คลิกสามครั้งเพื่อเลือกทั้งบรรทัด command-c เพื่อเลือกและ command-v สองครั้งเพื่อทำซ้ำ ไม่ใช่ฟังก์ชัน Xcode เป็นเพียงส่วนหนึ่งของระบบปฏิบัติการ


2
คลิกเมาส์และยิ่งแย่ลงสามเท่า? นั่นไม่ใช่วิธีแก้ปัญหาที่ผู้คนต้องการใช้แป้นพิมพ์ลัดกำลังมองหา
Ixx

4

ใช้สคริปต์ผู้ใช้

มีสคริปต์ให้ย้ายและลบบรรทัดได้หรือยัง คุณต้องกำหนดผูกที่สำคัญสำหรับสคริปต์เหล่านั้น (เมนูสคริป -> แก้ไขสคริปผู้ใช้ ...ภายใต้ Xcode 3.2)

หากต้องการทำซ้ำบรรทัดคุณต้องสร้างสคริปต์ของคุณเอง แต่มันง่ายมาก! ทำสำเนาสคริปต์ "ย้ายบรรทัดลง" และลบบรรทัดที่ลบข้อความที่เลือก:

delete (paragraphs startLine through endLine)

3

มีวิธีแก้ปัญหาสำหรับการทำซ้ำบรรทัด XCode4 ที่นี่

ฉันยังได้เพิ่มการลบบรรทัดใน plist:

<key>Remove Line</key> <string>selectLine:, deleteBackward:</string>


3

เราใช้ Xcode 9.0 และการเชื่อมโยงคีย์ยังไม่ทำงาน ถอนหายใจ

ฉันพบว่าส่วนสำคัญนี้มีประโยชน์มากดังนั้นจึงโพสต์ใหม่ที่นี่เพื่อใช้อ้างอิงในอนาคต:

  1. เปิด /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/IDETextKeyBindingSet.plist
  2. เพิ่มข้อมูลโค้ด XML ต่อไปนี้ลงในไฟล์นี้ที่ด้านล่าง </dict>
  3. ไปที่การตั้งค่า Xcode -> การผูกคีย์ -> แท็บข้อความ -> เลื่อนจนกว่าคุณจะเห็นการทำสำเนา
  4. คลิกที่ Duplicate Current Line เพิ่มทางลัดเช่น Cmnd + D (แก้ไขการเชื่อมโยงที่ซ้ำกัน)
  5. เปิด Xcode

<key>Duplication</key> <dict> <key>Duplicate Current Line</key> <string>moveToBeginningOfLine:, deleteToEndOfLine:, yank:, insertNewline:, moveToBeginningOfLine:, yank:</string> <key>Duplicate Lines</key> <string>selectLine:, copy:, moveToEndOfLine:, insertNewline:, paste:, deleteBackward:</string> <key>Delete Line</key> <string>selectLine:, deleteBackward:</string> </dict>



2

วิธีแก้ปัญหาโดยdamien.flament ใช้งานได้ดีและคุณอาจต้องตั้งค่าเอาต์พุตเป็น "Discard Output" ดูรูปด้านล่าง

การตั้งค่า Userscripts

PS: ฉันไม่รู้ว่าจะแสดงความคิดเห็นอย่างไรกับคำตอบของเขา


2

ตามที่กล่าวข้างต้น XCode อย่างใกล้ชิดและต่อไปนี้เพื่อแทรก ~/Library/Application Support/Xcode/Key Bindings/ <user>.pbxkeysภายใน<dict>ใน<key>text</key>ส่วน:

    <key>^D</key>                                                                                                      
    <array>                                                                                                            
        <string>moveToLeftEndOfLine:</string>                                                                               
        <string>deleteToEndOfLine:</string>                                                                                      
    </array>                                                                                                           
    <key>^K</key>                                                                                                      
    <array>                                                                                                            
       <string>selectLine:</string>                                                                               
       <string>copy:</string>                                                                                     
       <string>moveToEndOfLine:</string>                                                                          
       <string>insertNewline:</string>                                                                            
       <string>paste:</string>                                                                                    
       <string>deleteBackward:</string>                                                                           
    </array>

เริ่มต้น XCode และเพลิดเพลินCTRL- SHIFT- DและCTRL- -SHIFT หากคุณต้องการ- และ- ให้ใช้และในคำจำกัดความหลักแทน ตรวจสอบว่าไม่มีการผูกคีย์ซ้ำกันในไฟล์K
CTRLDCTRLK^d^k

ใช้งานได้ดีสำหรับฉันด้วย XCode 3.2


2

นี้เป็นไปได้โดยใช้BetterTouchTool CMD + D จะทำซ้ำบรรทัด สร้างทางลัดใหม่ดังนี้:

ป้อนคำอธิบายภาพที่นี่

ใช้ปุ่มแนบการดำเนินการเพิ่มเติมเพื่อต่อท้ายทางลัดที่สองและสาม


1

หากคุณปรับแต่งการผูกคีย์ Xcode ของคุณแล้วคุณจะต้องแก้ไขไฟล์: ~/Library/Application Support/Xcode/Key Bindings/<user>.pbxkeys. เพียงเพิ่มอาร์เรย์ทั้งสอง (ที่อธิบายไว้ข้างต้น) ลงในRoot/textพจนานุกรม


Hiya ฉันไม่ค่อยทำตามนี้เอกสาร pbxkey เป็น XML ในขณะที่ไฟล์ ~ / Library / KeyBindings / PBKeyBinding.dict ที่อธิบายไว้ข้างต้นเป็นรูปแบบที่แตกต่างกันโดยสิ้นเชิง (ดูเหมือน JSON เล็กน้อย) ไม่มีรายการรูท / ข้อความในเอกสาร pbxkeys เป็นเพราะฉันใช้เวอร์ชันที่ใหม่กว่าใช่หรือไม่
Ben Clayton

1

สามขั้นตอนในการลบบรรทัดปัจจุบัน (ดูยาวเกินไป แต่ทำเร็วมาก: D)

Cmd+ : ย้ายไปที่ท้ายบรรทัด
Cmd+ Delete: ลบไปที่จุดเริ่มต้นของบรรทัด
Delete: ลบบรรทัดว่าง


0

สำหรับ Xcode 6.1 ไปที่ Xcode> Preferences> KeyBindings> Text และมี "Delete to End of Line" และกำหนดคีย์ที่คุณต้องการ



0

ยังไม่มีวิธีในตัวในการทำซ้ำบรรทัดเช่นเดียวกับ Xcode 9 และการผูกคีย์แบบกำหนดเองดูเหมือนจะมีปัญหา

อัปเดต: Xcode 10.0 beta 6 (10L232m) เหมือนกัน


0

ไปที่ที่อยู่นี้:

/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet

จากนั้นคัดลอกไฟล์ IDETextKeyBindingSet.plist ในบางส่วนจากนั้นเปิดไฟล์ที่คัดลอกและแทรก

selectLine:, copy:, paste: วาง: เช่นภาพนี้ ป้อนคำอธิบายภาพที่นี่ และบันทึกและแทนที่ไฟล์ที่คัดลอกในที่อยู่นี้ /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet

จากนั้นรีสตาร์ท xcode เปิดคำนำหน้า xcode ไปที่แท็บ keybinding ค้นหาบรรทัดที่ซ้ำกัน (กำหนดเอง) และกำหนดคีย์สั้นสำหรับมันเช่นภาพด้านล่าง

[1]: https://i.stack.imgur.com/UTeZu.png


จากรีวิว: สวัสดีโพสต์นี้ดูเหมือนจะไม่ได้ให้คำตอบที่มีคุณภาพสำหรับคำถาม โปรดแก้ไขคำตอบของคุณและปรับปรุงหรือเพียงแค่โพสต์เป็นความคิดเห็น
sɐunıɔןɐqɐp
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.