Làm cách nào để tạo lối tắt Bàn phím Xóa dòng trong Xcode 8? Các giải pháp Xcode 3 không hoạt động nữa


80

Trong các phiên bản trước của Xcodenó, có thể tạo một ràng buộc khóa để xóa dòng hiện tại. Có các giải pháp khác nhau và chúng được mô tả ví dụ ở đây:

Xcode: Xóa phím nóng dòng

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

http://bigdiver.wordpress.com/2009/09/11/configure-homeend-key-bidings-on-mac-os-x/

http://www.betadesigns.co.uk/Blog/2010/02/03/custom-xcode-shortcuts/

Tất cả các giải pháp đều bao gồm việc sửa đổi một trong các tệp sau:

~ / Thư viện / Hỗ trợ ứng dụng / Xcode / Key Bindings / *. Pbxkeys
~ / Library / KeyBindings / DefaultKeyBinding.dict
~ / Library / KeyBindings / PBKeyBinding.dict

Một tài nguyên tốt cho các phím tắt hiện có trong Xcode 4http://cocoasamurai.blogspot.com/2011/03/xcode-4-keyboard-shortcuts-now.html . Có rất nhiều danh sách liên quan đến việc xóa, nhưng không có danh sách nào cho "dòng xóa".

NHƯNG, các giải pháp này KHÔNG hoạt động kể từ đó Xcode 4.

Cập nhật : Vấn đề vẫn giống nhưXcode 5.1.1

Cập nhật : Vấn đề vẫn giống nhưXcode 6.1 GM Seed 2

Cập nhật : Vẫn áp dụng cho Xcode Phiên bản 7.3 (7D175) kể từ ngày 26 tháng 4 năm 2016

Cập nhật : Sáu năm sau, Xcode 8.3 có một giải pháp tích hợp. Xem câu trả lời bên dưới.


Trong thời gian chờ đợi, tôi quyết định tạo macro bàn phím với keyboardmaestro.com .
Klaas

Tôi đoán có một số giải pháp được liệt kê dưới đây. Cá nhân tôi đang sử dụng macro Bàn phím Maestro.
Klaas

Câu trả lời:


71

Có vẻ như Xcode 8.3 cuối cùng đã thêm lệnh Delete Line :)

Theo mặc định, không có phím tắt nào được gán cho nó, vì vậy bạn sẽ cần tự thêm một phím tắt vào:

  1. Mở Xcode > Preferences > Key Bindings
  2. Tìm kiếm Delete Line
  3. Thêm phím tắt trong cột Phím

Liên kết khóa Xcode


1
WOW! Bắt đẹp! Không bao giờ nghĩ rằng điều này sẽ bao giờ xảy ra!
Klaas

Có ai đã tìm ra những gì khác có thể đã thay đổi?
Klaas

1
@ Klaas tôi quá đàn ông, không bao giờ nghĩ rằng sẽ thấy điều này! Tôi đã chạy một sự khác biệt giữa IDETextKeyBindingSet.plistcác tệp Xcode 8.2.1 và Xcode 8.3.2 và thay đổi duy nhất được phát hiện là lệnh Xóa dòng này ở trên :(
Paulo Mattos

@FelixTurner Bạn đã thử với Xcode beta 2 mới chưa?
Paulo Mattos

3
Tôi đã tìm thấy giải pháp thay thế trong Xocde 9 Beta . Hãy xem câu trả lời của tôi dưới đây. stackoverflow.com/a/45868495/1287336
Wooseong Kim

95

Sau rất nhiều tìm kiếm ở đây và đó, tôi đã đi đến giải pháp sau:

Bấm và giữ controlphím, sau đó bấm AKK.

(Lưu ý: lần thứ hai Kxóa dòng trống).

Thực ra nó là sự kết hợp của hai lệnh: Move to Beginning of Paragraph& Delete to End of Paragraph. Bạn cũng có thể sử dụng / đặt (các) phím khác và cũng có thể sử dụng / đặt / thay đổi ràng buộc phím cho (các) lệnh khác, ví dụ Move to Beginning of Line& Delete to End of Line. Tôi đã sử dụng các ràng buộc khóa (mặc định) ở trên vì chúng phù hợp với tôi.

Biên tập:

Để xóa nhiều hơn một dòng liên tiếp , trước tiên hãy nhấn và giữ controlphím, sau đó nhấn A(chỉ để chuyển đến đầu đoạn / dòng), sau đó nhấn và giữ Kcho đến khi tất cả các dòng bị xóa (thao tác này sẽ hoạt động khi con trỏ vẫn ở sự bắt đầu).

Chỉ để làm cho nhiệm vụ dễ dàng (đối với tôi), tôi đã đặt commandDcho Delete to End of Paragraphhome/ endđể đi đến đầu / cuối đoạn văn.


2
Giải pháp tốt, nhưng tôi thực sự đang tìm kiếm một lối tắt duy nhất. Ví dụ, nếu tôi muốn xóa 5 dòng trong TextWrangler, tôi chỉ cần nhấn 5 lần cmd-d. Thật kỳ lạ, cmd-d không được sử dụng trong Xcode ...
Klaas

@Klaas, hãy xem câu trả lời cập nhật của tôi. Nó có thể không phải là những gì bạn đang mong đợi, nó vẫn là một giải pháp tốt.
Vasu

Ngay sau khi câu trả lời của bạn nhận được một số phiếu tán thành, tôi sẽ chấp nhận vì Xcode 4 sẽ không sớm bao gồm điều này.
Klaas

xCode thật khủng khiếp! - Nhà phát triển Android sử dụng studio android.
M'hamed

shortcut dài nhất từng thấy tổ hợp phím CTRL + A + K + K để xóa dòng hiện tại
canbax

59

Hiểu rồi! Điều này hoạt động trong XCode 4.3 đến 4.5 và không yêu cầu ứng dụng bổ sung và là XCode cụ thể.

Giải pháp này về cơ bản giống như lệnh Duplicate Line được mô tả ở đây :

Chỉnh sửa tệp plist

Nó ở /Application/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet.plist

Lưu ý rằng:

  • câu trả lời được liên kết đề xuất sử dụng XCode cho việc này, nhưng tôi thấy rằng điều này làm hỏng XCode
  • đường dẫn này dành cho Lion - nó có thể khác nhau đối với các phiên bản hệ điều hành khác
  • bạn có thể phải thực hiện hoặc thay đổi quyền để chỉnh sửa tệp này
  • đóng XCode trước khi chỉnh sửa

Thêm một <dict>phần tử mới

Chỉ cần thêm văn bản này vào TRÊN phần đóng <dict>ở cuối tệp này

    <key>Custom</key>
    <dict>
      <key>Delete Current Line In One Hit</key>
      <string>moveToEndOfLine:, deleteToBeginningOfLine:, deleteToEndOfParagraph:</string> 
    </dict>

Lưu ý rằng:

  • Cái này bên trong cái hiện tại <dict>nên có cái </dict></plist>sau cái này
  • Điều này liên kết hành động có tên "Xóa dòng hiện tại trong một lần truy cập" với ba hành động chính trong chuỗi. Tôi đã thử với các lựa chọn khác nhau ở đây để có được sự kết hợp phù hợp. Ví dụ: nếu bạn thử moveToBeginningOfLine, deleteToEndOfLine thay vì ngược lại, sau đó sử dụng nó trên các dòng trống sẽ xóa dòng toàn bộ dòng tiếp theo. Thật khó chịu

Lưu cái này và mở XCode

Thêm một liên kết khóa mới trong XCode

Xem ảnh chụp màn hình cho điều này trong câu trả lời được liên kết hoặc thực hiện điều này:

  1. Mở tùy chọn XCode
  2. Chọn các ràng buộc chính
  3. Nhấp vào Tất cả
  4. Trong hộp Tìm kiếm, nhập "Xóa" và tìm kiếm "Xóa dòng hiện tại trong một lần truy cập"
  5. Thêm ràng buộc mới của bạn.

Điều này nên làm điều đó nhưng cho một cảnh báo. Tôi không bao giờ có thể lấy XCode để lưu ràng buộc mới. Vấn đề tương tự được mô tả ở đây mặc dù cách giải quyết của tôi có một chút thay đổi:

  1. Tạo bản sao của các ràng buộc Mặc định (nhấn nút + ở dưới cùng bên trái của cửa sổ Binding và tạo bản sao)
  2. Đặt ràng buộc mới trong bản sao
  3. Đóng hộp thoại tùy chọn (đó là biến thể!)
  4. Mở lại tùy chọn và tạo một bản sao mới của bản sao cũ và xóa bản sao cũ.

Thật là một sự nghiêm khắc, hả? Nhưng nó đã có tác dụng. Bây giờ tôi đã ánh xạ Ctrl + D để xóa toàn bộ dòng hiện tại trong XCode 4.3 trên Lion.


Cập nhật: một hạn chế mà tôi thấy khó chịu với giải pháp này là nó chỉ xóa một dòng tại một thời điểm, ngay cả khi bạn đã chọn toàn bộ lô. Xu hướng tự nhiên của tôi là chọn 3 dòng và nhấn Ctrl + D và xóa tất cả chúng - nhưng nó không.
Rhubarb,

Lưu ý rằng nếu bạn cài đặt phiên bản XCode mới, điều này sẽ không được giữ nguyên trong khi các tùy chỉnh ràng buộc khóa thông thường của bạn sẽ có. (Tôi "nâng cấp" bằng cách đổi tên XCode.app cũ và cài đặt lại cái mới). Các tổ hợp phím thực tế là trong ~ / Library ... để họ được bảo toàn, nhưng gương mặt mới này không phải là
Đại hoàng

Có, nó hoạt động trong Xcode 5 và lưu ràng buộc khóa để có thể khuyến khích người khác nghĩ rằng điều đó đáng để bận tâm :)
RedYeti

@Rhubarb Để xóa nhiều dòng cùng một lúc bằng cách có văn bản đã chọn trong những dòng và chỉ cần nhấn phím tắt chỉ cần thêm một delete:ở phía trước của chuỗi lệnh: delete:, moveToEndOfLine:, deleteToBeginningOfLine:, deleteToEndOfParagraph:. Sẽ thật tuyệt nếu bạn chỉnh sửa điều này thành câu trả lời của mình.
LopSae

2
Điều này hoạt động trong Xcode 6.2 (6C86e) và tôi cũng không cần giải pháp thay thế để làm cho Xcode "lưu" liên kết khóa. Yay! :)
Will Hains

16

Tôi đã tìm thấy một giải pháp tạm thời cho Xcode 9 .

Mở Xcode / Content / Frameworks / IDEKit.framework / Resources / IDETextK‌ eyBindingSet.plist và thêm các dòng bên dưới.

Nó bắt chước hành động xảy ra trong Xcode 8 với sự hỗ trợ hạn chế. Nó chỉ có thể loại bỏ chỉ một dòng nhưng tôi hài lòng bằng cách nào đó. Tôi hy vọng điều này sẽ sớm được sửa chữa.

<key>Customized</key>
<dict>
    <key>Delete Line</key>
    <string>moveToBeginningOfLine:, deleteToEndOfLine:, moveDown:, deleteBackward:</string>
</dict>

Sau khi khởi động lại Xcode, bạn có thể thấy mục tùy chỉnh Key Bindingsnhư bên dưới.

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

Ràng buộc và sử dụng nó!

Chỉnh sửa) Tôi nghĩ cái dưới đây tốt hơn cái gốc.

<string>moveToEndOfLine:, deleteToBeginningOfLine:, deleteToEndOfParagraph:</string>

2
Câu trả lời đúng Xcode 9 ở đây. Nó hoạt động Xcode 9 Phiên bản 9.0 (9A235)
uspython

Tại sao điều này lại xảy ra trong Xcode 9? Điều này làm việc cho tôi kinda. Tôi đã phải thay thế giá trị cho giá trị chuỗi Dòng Xóa hiện tại thay vì thêm khóa tùy chỉnh.
Alexander Smith

13

Tôi sử dụng BetterTouchTool , nó khá tuyệt:

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


Thay thế tốt, sửa đổi plist không phải lúc nào cũng tốt. Và cài đặt dễ bị mất. Trợ giúp Apple sẽ làm cho nó phù hợp.
Albert.Qing

Thay thế rất tốt để giải quyết vấn đề. Thật không may, nó không phải là một hành động nguyên tử vì vậy nếu bạn muốn hoàn tác, bạn phải nhấn Cmd Z hai lần (hai lần xóa). Ngoài ra, trình quản lý cửa sổ cũng thêm vào nó hữu ích (tôi cũng muốn giới thiệu Spectacle).
Rudolf Real

1
BTT là một công cụ tuyệt vời. Ngoài ra, phương pháp này là bằng chứng trong tương lai miễn là Apple có các hành động mà bạn có thể kết hợp để làm những gì bạn đang tìm kiếm.
SuperDuperTango

1
Tôi đã không xem xét việc sử dụng BTT (như một cái gì đó tôi đã sử dụng!) Tốt hơn nhiều so với việc chỉnh sửa một cái gì đó bên trong ứng dụng. Thêm vào đó, bạn có thể đồng bộ cấu hình giữa các máy, đó là điều tôi cần.
Phát hành

9

Câu trả lời của Rhubarb là đúng và hoạt động nhưng có một điều, có một lệnh đơn giản hơn trong tệp plist. Làm theo tất cả các hướng dẫn của Rhubarb 's nhưng

thay vì

<string>moveToEndOfLine:, deleteToBeginningOfLine:, deleteToEndOfParagraph:</string>

sử dụng bên dưới

<string>selectLine:, delete:</string>

Điều này rõ ràng hơn và loại bỏ bất kỳ khả năng trục trặc nào.

Tôi muốn viết điều này như một bình luận, nhưng "danh tiếng" của tôi không cho phép tôi làm điều đó.


Trộn giải pháp của bạn với câu trả lời này sẽ giải quyết được vấn đề. Thực sự cảm ơn
marcelosalloum

8

thử cái này:

  1. Đầu tiên hãy mở Xcode-> Preferences

  2. Chọn Bindigs chính

  3. tìm kiếm Xóa đoạn

  4. Thay đổi Xóa đoạn thành lối tắt của bạn

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


Tôi không biết tại sao những người khác không sử dụng giải pháp ĐƠN GIẢN này. Hãy bỏ phiếu cho nó vì những cái khác phức tạp hơn nhiều. Đây cũng là một cách bạn nên làm điều đó: thông qua một phím ràng buộc
danh sách kiểm tra

Không có gì xảy ra thực thi Delete Paragraphtrong Xcode Phiên bản 9.0 (9A235). Bạn đã kiểm tra nó trong Xcode 9 chưa?
Wooseong Kim

2

Nếu bạn là người dùng Bàn phím Maestro, chỉ cần tạo macro thực hiện những việc sau:

  • Lệnh Mũi tên Trái
  • Shift Mũi tên Xuống
  • Xóa bỏ

Tôi đã gán nó cho Command-D và làm cho nó chỉ khả dụng trong Xcode.


Tôi đang sử dụng Công cụ cảm ứng tốt hơn và bạn cũng có thể chỉ định nó trong đó.
abc123,

1

Có vẻ như XCode hiện sử dụng tệp plist so với tệp dict và định dạng mới không hỗ trợ thêm nhiều lệnh vào liên kết khóa. Dường như không có cách nào để thêm các lệnh tùy chỉnh để liên kết với cả hai. Cách duy nhất tôi đã tìm ra để làm cho một thứ gì đó hoạt động là thiết lập một ràng buộc chính cho các hành động riêng biệt, chẳng hạn như ^Dfor deleteToEndOfLine:, then ^Lfor moveToBeginningOfLine:, mang lại ^L+^Dcho bạn hiệu ứng tổng hợp.


Đã có một số mặc định để xử lý điều này. ^ k cho "xóa đến cuối dòng", cmd-delete cho "xóa đến đầu dòng".
Klaas

Trong tệp keybindings.dict thông thường (Toàn cầu), chúng tôi đặt các lệnh riêng biệt vào một mảng và hoạt động.
McUsr

1

Nếu bạn không phiền khi có ràng buộc khóa đó trong các ứng dụng khác, bạn có thể thử đặt nó trong ràng buộc khóa Cacao chung. Điều này có một lời giải thích.


2
Tôi đã thử điều này rồi, nhưng các ràng buộc khóa chung không hoạt động trong XCode 4. Tôi đã thử nghiệm chúng trong TextMate và chúng hoạt động ở đó. Vì vậy, tôi đã sửa đổi đúng.
Klaas

1

Có vẻ như nó không thể được thực hiện ngay bây giờ ... vui lòng sửa cho tôi nếu tôi sai ... nhưng đây là giải pháp mới của tôi ...

chuyển đến tùy chọn xcode, sau đó đến tab liên kết khóa. sao chép tập hợp mặc định, để bạn sẽ không giận tôi khi đề xuất mà tôi đưa ra phá vỡ điều gì đó mà bạn sẽ sử dụng.

tìm 2 phím liền nhau và không được sử dụng cho bất kỳ lệnh nào mà bạn sử dụng ... ";", "'" có lẽ. (Tôi không sử dụng lệnh n cho tệp mới, vì vậy tôi đã chọn n, m)

đặt phím đầu tiên thành "Di chuyển đến đường ăn xin" và phím thứ hai thành "Xóa đến cuối dòng"

sau đó sử dụng trình tự đó để xóa một dòng ...

thay thế sẽ được đặt một cái gì đó để chọn dòng, sau đó chỉ cần sử dụng xóa.



-1

Đầu tiên hãy mở Xcode-> Preferences

Chọn Bindigs chính

Sau đó tìm kiếm Xóa

Thay đổi Delete The End Of Line thành phím tắt của bạn (tôi thích CMD + D hơn )

Đó là tất cảĐây là ảnh chụp màn hình


Hm ... Điều này không xóa toàn bộ dòng.
Klaas

Bạn nên đặt con trỏ bắt đầu của dòng
LoGoCSE

Ok, điều này giống với ctrl-k
Klaas
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.