Xcode trùng lặp / xóa dòng


128

Đến từ Eclipse và đã được sử dụng để sao chép các dòng mọi lúc, thật lạ khi phát hiện ra rằng Xcode không có chức năng như vậy. Hay không?

Tôi biết có thể thay đổi các phím bấm trên toàn hệ thống nhưng đó không phải là những gì tôi đang theo đuổi.


trùng lặp có thể có của Xcode: Xóa khóa nóng dòng
joshperry

thiết lập này Hoạt động cho 9.2 stackoverflow.com/a/34195483/1348522
Zumry Mohamed 29/03/18

Câu trả lời:


91

Toàn bộ điểm KHÔNG được sử dụng Cmd-C/ Cmd-Vphím tắt. Tôi có cùng một vấn đề đến từ IntelliJ, và có thể chỉ cần sao chép các dòng với Cmd-Dvà xóa chúng với Cmd-Ylà một trình tiết kiệm thời gian lớn.

Nó đã làm phiền tôi từ bao giờ. Tuy nhiên, có vẻ như một người khác đã tìm thấy một giải pháp hoạt động.

Nói tóm lại, tạo một tệp ~/Library/KeyBindings/PBKeyBinding.dictcó nội dung sau và khởi động lại Xcode.

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

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

Điều này sẽ tạo ra hai phím tắt: Ctrl- Shift- Kđể xóa dòng hiện tại và Ctrl- Shift- Dđể sao chép dòng hiện tại. Xin lưu ý rằng điều này sẽ chỉ hoạt động nếu bạn KHÔNG sử dụng một ràng buộc khóa tùy chỉnh được đặt trong Xcode. Chuyển sang "Mặc định XCode" và mọi thứ sẽ hoạt động. Đã thử nghiệm trên XCode 3.2 trên Snow Leopard.

Thông tin thêm về các ràng buộc chính của Mac OS X: http://funkworks.blogspot.it/2013/03/republishing-of-wwwerasetotheleftcompos.html


5
Đây phải là câu trả lời thực sự. Btw - nếu bạn muốn nhập lối tắt cmd-d (xóa dòng) từ Eclipse, trước tiên bạn sẽ phải thay đổi lối tắt Thêm Dấu trang trong menu chỉnh sửa trong XCode
Chris R

@joshperry, có gì hoạt động với Xcode 4+ không? Các Duplicatelệnh (trong Edit -> Duplicate) dường như "luôn luôn" chuyển sang màu xám (và không có nghĩa là cho sao chép dòng).
Blaz

Tôi đã sử dụng OS X từ ngày đầu tiên và chưa bao giờ biết về các ràng buộc chính. Thật là một tính năng thú vị. Hãy xem trình soạn thảo ràng buộc khóa GUI rất đẹp này mà tôi đã tình cờ thấy .
Alex Gray

Tìm thấy thêm thông tin trên trang web dành cho nhà phát triển của Apple .
aleclarson

Nghe có vẻ hay, nhưng có vẻ như nó không hoạt động với tôi trong Xcode 5.0.2 :(
voghDev

105

Để xóa một dòng : Ctrl-A để đi đến đầu của dòng, sau đó Ctrl-K để xóa nó và một lần khác Ctrl-K để xóa dòng trống. (Tôi không sử dụng Xcode rất thường xuyên, nhưng tôi đã quen với điều đó trong Emacs và các kiểu nhập văn bản khác với các ràng buộc giống như Emacs và dường như nó cũng hoạt động trong Xcode.)

Và để sao chép một dòng : Tôi không biết nhiều chương trình có lệnh cho điều đó, nhưng thông thường tôi chỉ sử dụng Sao chép + Dán - trong Xcode giống như CUA: Ctrl+A để đi đến đầu dòng, Shift+ để chọn nó, Command + Cđể sao chép và Command + * Vđể dán hai lần (một lần ghi đè lên dòng và một lần nối vào nó).

(từ một người gõ và chỉnh sửa văn bản mọi lúc, thường xuyên trong các chương trình khác nhau, và đôi khi tức giận vì phải đánh lạc hướng mình với một tiện ích câm trong khi chỉnh sửa một chút trong văn bản, anh ta không thể tránh việc nhớ các chuỗi này và thói quen)


3
Điều này sẽ hoạt động trong tất cả các ứng dụng sử dụng Ca cao để nhập văn bản, vì đây là một tính năng của Hệ thống Văn bản Ca cao. Có rất nhiều phím tắt như thế này, một danh sách trong số chúng có thể được tìm thấy ở đây: hcs.harvard.edu/~jrus/Site/System%20Bindings.html :)
Ahti

2
'yank' phải là ctrl + Y trên máy Mac hiện đại.
Xe cộ

Command-V để dán nó và thụt lại. Control -Y cũng sẽ dán nhưng không thụt lại văn bản đã dán.
Scott Gardner

77

Xóa một dòng như nhật thực CTRL+ D(đã thử nghiệm trên Xcode 4.5.1):

Trước hết, thay đổi các quyền này:

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

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

Tự mở /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet.plistbằng Xcode và thêm mục mới này:

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

nhập mô tả hình ảnh ở đây

Khởi động lại Xcode và mở Xcode> Tùy chọn> KeyBindings. Tìm macro của bạn và xác định một phím tắt:

nhập mô tả hình ảnh ở đây


5
Nếu bạn muốn thêm một cách để Nhân đôi một dòng, hãy làm tương tự, nhưng khi dán giá trị mới vào tệp IDETextKeyBindingSet.plist, hãy dán mã này "selectLine:, copy:, moveToEndOfLine:, insertNewline:, paste:, removeBackward: ".
jollyr0ger

+1 Giải pháp này hoạt động nhưng trong Xcode 4.6.1 ^ D mâu thuẫn với các ràng buộc khóa hiện có khác.
bernardn

Làm thế nào bạn có thể có được điều đó cho 'Dòng trùng lặp'?
Markus

Điều này không hoạt động trong xcode 6. Chỉ có chức năng đầu tiên được gọi từ danh sách
Mrug

1
Tôi yêu nó, hoạt động như một cơ duyên đối với tôi theo XCode 6.3.1.
fwielstra

9

Tôi đã thử giải pháp ràng buộc chính, nhưng tôi không thể làm cho nó hoạt động được. Tuy nhiên, việc chỉnh sửa các ràng buộc khóa XCode của tôi hoạt động như một nét quyến rũ. Đây là cách tôi thực hiện nó.

Giải pháp này không làm thay đổi nội dung của Clipboard!

Mở các ràng buộc chính XCode:

văn bản thay thế

Trong hộp thoại Chỉnh sửa tập lệnh người dùng:

  1. Sao y tập lệnh "Move Line Down" và đổi tên nó
  2. Sao y tệp "Move Line Down.scpt", đổi tên tập lệnh, chọn tệp qua (nhấp đúp chuột) trong Script Editor
  3. Chỉnh sửa tập lệnh (Mở "AppleScript Editor") và xóa đoạn "xóa (đoạn startLine qua endLine)".
  4. Nếu bạn không muốn khởi động lại XCode, dường như bạn phải xóa và thêm lại tập lệnh. Hãy chắc chắn rằng bạn đã đặt "Đầu ra" thành "Hủy đầu ra", nếu không bạn sẽ có "(null)" trong tệp nguồn của mình
  5. Tôi sửa đổi một chút các tập lệnh thêm một chút để có các dòng đúng được chọn:

Nhân đôi dòng:

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

Dòng trùng lặp xuống:

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

văn bản thay thế


2
Không được đề cập rõ ràng ở trên, có các tập lệnh hiện có cho Xóa dòng, Di chuyển lên và Di chuyển xuống. Câu trả lời được chấp nhận có nhược điểm là nó chỉ hoạt động nếu bạn có các phím bấm được đặt thành Mặc định XCode. Việc sử dụng tập lệnh cho phép bạn giữ các tổ hợp phím tùy chỉnh của mình, vì các tổ hợp phím cho tập lệnh được xử lý tách biệt với các tập lệnh cho phần còn lại của XCode.
Tác nhân gây bệnh

7

OK, vì vậy tôi đã làm việc này được một lúc và rồi đột nhiên nó bị hỏng. Bây giờ tôi đã kết hợp từ các bài viết khác nhau ở đây và tìm thấy một giải pháp hoạt động cho XCode 6.3.1.

  1. Đi đến /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/với Finder.

  2. tìm thư mục có tên Tài nguyên. Nhấp chuột phải vào nó, nhấn Nhận thông tin, mở khóa cài đặt chia sẻ và quyền (Bằng cách nhấn khóa) và đặt thành Đọc và Viết cho tất cả.

  3. Nhập thư mục và tìm tệp IDETextKeyBindingSet.plist. Nhấp chuột phải vào nó, nhấn Nhận thông tin, mở khóa cài đặt chia sẻ và quyền (Bằng cách nhấn khóa) và đặt thành Đọc và Viết cho tất cả.

  4. Mở tệp bằng XCode (Mặc định)

  5. Tìm xóa, nhấp chuột phải và thêm một hàng mới. Đặt tên cho ví dụ Xóa dòng. Trong trường giá trị, gõ : selectLine:, deleteBackward:. (Điều này cũng có thể được thực hiện cho dòng trùng lặp selectLine:,copy:,moveToEndOfLine:,insertNewline:,paste:,deleteBackward::)

  1. Bắt đầu XCode, đi đến tùy chọn / keybindings và tìm kiếm Xóa Dòng. Đặt phím tắt. Thưởng thức.

6

Vì Xcode 4 gây khó khăn cho việc thực hiện bằng cách sử dụng các ràng buộc chính, tôi đã sử dụng Bàn phím Maestro ( Quickey cũng hoạt động tốt, nhưng nó không tương thích hoàn toàn với Lion). Ví dụ: đây là phím tắt Maestro Bàn phím của tôi (bị ràng buộc với-⇧-D):

http://bit.ly/thC6yf


3
"Mua ngay với giá 36 đô la" ... thật là ăn cắp) lol ... cho đến khi tôi thấy điều này trên trang web Maestro, tôi nghĩ rằng nó có thể là một giải pháp tốt
ycomp

@ycomp, đây là một giải pháp miễn phí .
Blaz

5

Để xóa Line trong Xcode 10.1, vui lòng làm theo các bước của ảnh chụp màn hình bên dưới để thêm phím tắt.

nhập mô tả hình ảnh ở đây


5

Tôi biết rằng chủ đề này khá cũ nhưng tôi đã tìm thấy một giải pháp khác bằng BetterTouchTool , bạn có thể thực hiện chuỗi Ctrl+ A, Ctrl+ K, Ctrl+ Ktrong một phím tắt bằng cách định cấu hình như thế này trong BTT:

nhập mô tả hình ảnh ở đây

(Sử dụng nút Hành động bổ sung đính kèm để nối thêm phím tắt thứ hai và thứ ba)

PS: Đến từ Eclipse trong đó Cmd+ Dlà xóa dòng ^^


4

Bấm ba lần để chọn toàn bộ dòng, lệnh-c để chọn và lệnh-v hai lần để nhân đôi nó. Đây không phải là chức năng Xcode, nó chỉ là một phần của HĐH.


2
Nhấp chuột và thậm chí còn tồi tệ hơn, gấp ba? Đó chắc chắn không phải là giải pháp mọi người muốn sử dụng phím tắt đang tìm kiếm.
Ixx

4

Sử dụng tập lệnh người dùng.

Có các kịch bản để di chuyển và xóa các dòng chưa. Bạn phải xác định các liên kết chính cho các tập lệnh đó (menu Tập lệnh -> Chỉnh sửa tập lệnh người dùng ... , trong xCode 3.2).

Để nhân đôi dòng, bạn phải tạo kịch bản của riêng bạn. Nhưng nó rất đơn giản! Sao y tập lệnh "Di chuyển xuống" và xóa dòng xóa văn bản đã chọn:

delete (paragraphs startLine through endLine)

3

Có một giải pháp cho sao chép dòng XCode4 tại đây

Tôi cũng đã thêm xóa dòng vào bảng:

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


3

Chúng tôi đang sử dụng Xcode 9.0 và các phím bấm vẫn không hoạt động. Thở dài.

Tôi thấy ý chính này rất hữu ích vì vậy đăng lại nó ở đây để tham khảo trong tương lai:

  1. Mở /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/IDETextKeyBindingSet.plist
  2. Thêm đoạn mã XML sau vào tệp này ngay phía dưới cùng </dict>
  3. Chuyển đến tùy chọn Xcode -> Ràng buộc chính -> tab Văn bản -> Di chuyển cho đến khi bạn thấy Sao chép
  4. Nhấp vào Sao chép Dòng hiện tại, thêm lối tắt cho nó, ví dụ. Cmnd + D (giải quyết mọi ràng buộc trùng lặp)
  5. Mở 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

Giải pháp của damien.flament hoạt động rất tốt và bạn có thể cần đặt đầu ra thành "Hủy đầu ra" xem hình dưới đây

Cài đặt mô tả người dùng

Tái bút: Tôi không biết cách bình luận câu trả lời của anh ấy.


2

Như đã nói ở trên, đóng XCode và chèn vào ~/Library/Application Support/Xcode/Key Bindings/ <user>.pbxkeysbên trong <dict>trong <key>text</key>phần:

    <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>

Bắt đầu XCode và tận hưởng CTRL- SHIFT- DCTRL- SHIFT- K.
Nếu bạn muốn CTRL- DCTRL- K, sử dụng ^d^ktrong các định nghĩa chính thay thế. Đảm bảo không có ràng buộc khóa trùng lặp trong tệp.

Hoạt động tốt với tôi với XCode 3.2


2

Điều này có thể sử dụng BetterTouchTool . CMD + D sẽ nhân đôi một dòng. Tạo một lối tắt mới như thế này:

nhập mô tả hình ảnh ở đây

Sử dụng nút Đính kèm hành động bổ sung để nối thêm phím tắt thứ hai và thứ ba


1

Nếu bạn đã tùy chỉnh các ràng buộc khóa Xcode của mình, bạn sẽ phải chỉnh sửa tệp : ~/Library/Application Support/Xcode/Key Bindings/<user>.pbxkeys. Chỉ cần thêm hai mảng (mô tả ở trên) vào Root/texttừ điển.


Hiya. Tôi hoàn toàn không tuân theo điều này, tài liệu pbxkey là XML trong khi tệp ~ / Library / KeyBindings / PBKeyBinding.dict được mô tả ở trên là một định dạng hoàn toàn khác (trông hơi giống JSON). Không có mục nhập Root / văn bản trong tài liệu pbxkeys. Có phải vì tôi đang sử dụng phiên bản mới hơn?
Ben Clayton

1

Ba bước để xóa dòng hiện tại (xem quá lâu, nhưng làm rất nhanh: D)

Cmd+ : di chuyển đến cuối dòng
Cmd+ Delete: xóa đến đầu dòng
Delete: xóa dòng trống


0

Đối với Xcode 6.1, bạn đã truy cập Xcode> Tùy chọn> KeyBindings> Văn bản Và có "Xóa đến hết dòng" và gán một khóa bạn muốn.



0

Tuy nhiên, không có cách tích hợp nào để sao chép các dòng, kể từ Xcode 9. Và các ràng buộc khóa tùy chỉnh dường như có vấn đề.

Cập nhật: Xcode 10.0 beta 6 (10L232m) là như nhau.


0

Tới địa chỉ này:

/Appluggest/Xcode.app/Contents/Frameworks/IDEKit.framework/Resource/IDETextKeyBindingset

và sau đó sao chép tệp IDETextKeyBindingSet.plist ở một số nơi và sau đó mở tệp đã sao chép và chèn

selectLine:, copy:, paste:, paste: như hình ảnh này, nhập mô tả hình ảnh vào đây và lưu nó và thay thế tệp đã sao chép trong địa chỉ này /Appluggest/Xcode.app/Contents/Frameworks/IDEKit.framework/Resource/IDETextKeyBindingset

sau đó khởi động lại xcode, mở các tiền tố xcode, chuyển đến tab keybinding, tìm kiếm dòng trùng lặp (tùy chỉnh) và xác định khóa ngắn cho nó giống như hình ảnh bên dưới

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


Từ đánh giá: Xin chào, bài đăng này dường như không cung cấp câu trả lời chất lượng cho câu hỏi. Vui lòng chỉnh sửa câu trả lời của bạn và cải thiện nó, hoặc chỉ đăng nó dưới dạng một bình luận.
sunıɔ qɐp
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.