Ada adalah sebuah Duplicate
perintah dalam Menu Edit (dengan shortcut default ⌘D), tetapi (sebagai Halley menunjukkan) dimaksudkan untuk duplikasi dalam Interface Builder bagian dari Xcode.
Jadi, bagaimana Anda ( dengan mudah ) menduplikasi baris di Xcode 4?
Pertanyaan terkait (dengan jawaban yang berfungsi) untuk Xcode 3 ... dan yang tidak berfungsi untuk Xcode 4.
Mengapa tidak salin & tempel saja?
Karena itu membosankan dan memerlukan terlalu banyak akrobat tangan:
baik (1) : pindah ke baris awal dan kemudian menekan ⇧^E, lalu menyalin dengan ⌘C, pindah ke baris baru, menyelaraskan kursor, dan terakhir menempel dengan ⌘V;
atau (2) : ^A(atur kursor ke awal baris), ^SPACE(setel tanda), ^E(setel kursor ke akhir baris), ⇧^W( Select to Mark
; disesuaikan), salin, baris baru, dll.
Seperti yang dikatakan oleh Frank Schröder (dalam pertanyaan terkait ):
Intinya adalah TIDAK menggunakan pintasan Cmd-C / Cmd-V.
Jawaban:
Buka folder ini yang berisi sisi gelap gaya:
/Developer/Library/PrivateFrameworks/IDEKit.framework/Resources
/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources
.Buka
IDETextKeyBindingSet.plist
.Tambahkan kamus baru dan item perintah baru seperti gambar di bawah (beri nama sesuai keinginan Anda):
Itu:
selectLine:, copy:, moveToEndOfLine:, insertNewline:, paste:, deleteBackward:
Restart Xcode dan pergi ke Preferences - Key Bindings, cari perintah Anda.
Tetapkan kombinasi tombol untuk perintah:
Akhirnya melepaskan kekuatan pengikatan kunci pada Xcode ... Selamat menikmati!
sumber
/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources
ditunjuk alias. Jika tidak, saya telah berhasil mengikuti langkah Halley pada versi 4.3.2 ... Saya sarankan Anda mencadangkan file asli dan kemudian membukanya di Xcode itu sendiri (dan bukan di TextEdit). Juga, mengenai izin: mengubahnya (hanya untuk file itu sendiri; tidak diperlukan rekursi) di Finder berfungsi dengan baik.<key>Custom</key> <dict> <key>Duplicate Current Line</key> <string>selectLine:, copy:, moveToEndOfLine:, insertNewline:, paste:, deleteBackward:</string> </dict>
Perbarui 2020
Bekerja pada versi Xcode: 11.3.1 juga
Bekerja dalam versi Xcode: 7.1, 7.3, 7.3.1, 8.0, 8.1, 8.2, 8.3, 9.0, 9.1, 9.2, 10.0, 10.1, 10.2.1
Petunjuk
untuk versi 11.3.1
di bawah 11.3 versi
untuk 11.3.1
untuk versi di bawah ini
Screenshot
dan Restart Xcode dan pergi ke
Preferences - Key Bindings
, cari perintah yang kita ketikkan (Duplicate Lines & Duplicate Current Line).Itu dia.
Untuk unix orang yang perlu diperhatikan: -
sumber
IDETextKeyBindingSet.plist
dan menambahkan kamus di atas dan kemudian memetakan kunci di Preferensi XCode.Oke, saya telah menemukan ini:
Versi untuk XCode 11:
Karena saya menerapkan perubahan ini setelah setiap pembaruan XCode, saya telah membuat skrip untuk itu. Mungkin bisa menyebabkan kerusakan, tapi saya sudah mencoba membuatnya relatif aman. Itu membuat salinan file, dan kemudian mengganti baris dengan salinannya dan perintah tambahan menggunakan perl. Membutuhkan XCode untuk diinstal di
/Applications/Xcode.app
Versi lama (Saya tidak yakin apakah yang baru kompatibel dengan versi lama, jadi saya akan menyimpannya di sini):
dan skrip untuk versi lama untuk menghindari pengeditan file manual:
edit: perbaikan kecil edit2: diubah ke pemilihan paragraf edit3: versi yang ditambahkan untuk XCode 11
sumber
Hari ini saya menulis plugin yang sangat kecil untuk Xcode 5 yang menghapus dan menggandakan garis dan pilihan.
Anda dapat mengunduhnya dari repo GitHub saya: Plugin XcodeKit - https://github.com/ptfly/XcodeKit
sumber
Jawaban @ Hailei cukup bagus, tetapi memiliki efek samping yang tidak menguntungkan berupa clobber konten clipboard (membiarkannya diisi dengan konten dari baris yang digandakan), yang merupakan bagian dari pendekatan salin / tempel manual yang saya coba hindari .
Jadi, saya mengubah urutan perintah menjadi ini:
2
yank:
s mungkin tidak berfungsi sebagaimana mestinya jika Anda telahNSTextKillRingSize
menyetel sesuatu selain1
, tetapi saya cukup yakin1
adalah defaultnya, dan Anda harus melakukan beberapa pekerjaan non-sepele untuk mengubahnya (ini memerlukan penambahan entri ke~/Library/Preferences/.GlobalPreferences.plist
).sumber
defaults write -g NSTextKillRingSize 1
daripada bermain dengan GlobalPreferences.plist. ;)moveToBeginningOfLine:, deleteToEndOfLine:, yank:, insertNewline:, setMark:, moveToBeginningOfLine:, selectToMark:, yank:
Mengapa menduplikasi satu baris? Menggandakan seluruh paragraf lebih baik. Urutan saya:
Gandakan Paragraf Saat Ini
Hapus Paragraf Saat Ini
Bekerja dengan baik di Xcode 4.6
sumber
Saya bertanya-tanya mengapa tidak ada yang menyebutkan menggunakan ⌘bersama dengan tombol panah ( ←↑→↓) untuk memindahkan kursor dan memilih seluruh baris (dengan menambahkan ⇧).
Saya secara teratur menyalin seluruh baris (duplikat) dengan menggerakkan kursor ke awal baris menggunakan ⌘+ ←(bukan ctrl+ A) dan kemudian menggunakan ⌘+ ⇧+ →(bukan ctrl+ ⇧+ E) untuk memilih seluruh baris sampai akhir dan kemudian salin / tempel.
Saya mengalami utas lain di mana tidak ada orang yang tampaknya menggunakan pintasan keyboard ini. Mereka bersifat global di OS X dan saya menggunakannya sepanjang waktu! Apalagi akrobat tangan;)
sumber
EDIT: 12 Jul 2020 Setelah memperbarui ke Xcode 11.5 lagi
duplicate line
entri kunci saya dariplist
file hilang. Saya harus menambahkannya lagi. Pengikatan kuncinya masih ada.EDIT: 17 Sep 2019 Setelah memperbarui ke Xcode 10.3 lagi
duplicate line
entri kunci saya dariplist
file hilang. Saya harus menambahkannya lagi. Pengikatan kuncinya masih ada.EDIT: 28 Mei 2019 Setelah memperbarui ke Xcode 10.2 lagi
duplicate line
entri kunci saya dariplist
file hilang. Saya harus menambahkannya lagi. Pengikatan kuncinya masih ada.EDIT: 23 Des 2018 Setelah memperbarui ke Xcode 10.1 semua pintasan saya rusak lagi. Tetapi sesuatu yang berbeda adalah bahwa setelah memperbarui file plist untuk duplikasi baris, saya tidak perlu menentukan binding kunci saya, mereka sudah ada di sana. Aneh.
EDIT: 14 OKTOBER 2018 Xcode 10: Seseorang yang berada di atas Apple sangat menyukai salin / tempel, dan pastikan bahwa dengan setiap versi pembaruan Xcode, duplikasi baris dihapus dari pemasangan semua orang. Kami para pengembang sangat frustrasi dengan omong kosong yang terjadi di Xcode sejak selamanya, satu-satunya IDE tanpa opsi duplikasi baris. Saya baru saja memperbarui ke Xcode 10, dan seperti yang Anda tebak - semua tombol pintas saya dihapus bersama dengan fungsi duplikasi baris saya. Namun, itu bisa diperbaiki seperti pada jawaban aslinya. Sedikit perbedaan kali ini adalah Anda memerlukan baris berikut:
EDIT: Xcode 9: Saya harus mengulangi pintasan dan duplikasi serta penghapusan baris, tetapi hal baiknya adalah sekarang Anda dapat mengedit IDETextKeyBindingSet.plist lagi. Pria Apple kelas atas ini pasti sedang berlibur ketika mereka merilis versi ini.
EDIT: Xcode 8: Buggy, Anda tidak dapat mengubah file IDETextKeyBindingSet.plist sama sekali. Xcode mengatur ulang saat mulai. Orang tinggi di Apple ini benar-benar bertekad untuk membuat kami menggunakan salin / tempel alih-alih duplikasi baris sederhana seperti di semua IDE lain di luar sana.
EDIT: Xcode 7.1 dan masih tidak ada jalan pintas untuk duplikasi dan penghapusan baris. Ini adalah satu-satunya IDE yang pernah saya gunakan tanpa jalan pintas seperti itu. Dan saya tidak bisa membayangkan kehidupan seorang pengembang tanpa dua jalan pintas penting ini.
Berikut cara melakukannya:
Pertama kita perlu memodifikasi file plist yang ada di dalam bundel Xcode.app (perlu sudo untuk mengedit)
/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet.plist
Kemudian cari
<key>Insertions and Indentations</key>
dan di bawah<dict>
tag tambahkan yang berikut ini:Kemudian temukan dan ini di dalam bagian di
<key>Deletions</key>
bawah<dict>
tag:Sekarang Buka / Mulai Ulang Xcode, buka Preferensi dan buka tab "Key Bindings". Gunakan bilah pencarian untuk memfilter dan mencari pintasan baru. Kemudian klik di depan deskripsi pintasan untuk menetapkan pintasan yang Anda sukai. Pastikan pintasan Anda tidak bertentangan dengan pintasan yang ada.
sumber
Saya akan mempertimbangkan untuk merevisi urutan perintah menjadi:
Yang ditambahkan
deleteToBeginningOfLine
mempertahankan indentasi dari garis duplikat.sumber
insertLineBreak membutuhkan setidaknya saya untuk membuat salinan di baris baru, tanpa itu saya mendapat salinan di baris yang sama
sumber
Saya mengalami masalah besar untuk membuka kunci file .plist di MacOS Sierra dan Xcode 9, bahkan keputusan @Tim tidak berhasil untuk saya. Jika Anda memiliki masalah yang sama, pergi ke terminal dan lakukan ini:
Beberapa kemungkinan cara lain untuk melakukan ini juga dijelaskan di sini .
Kemudian di nano editor klik
^W
dan ketik 'sisipan' untuk melompat ke bagian 'Sisipan dan Indentasi'. Tepat di bawah<dict>
tag tempelkan xml-snippet ini:Tekan
control + X
, laluY
, laluEnter
untuk menyimpan file di editor nano.UPD: Saya membuat keputusan yang lebih baik, yang menambahkan baris tambahan sebelum duplikasi (berguna saat Anda ingin menduplikasi baris yang memiliki baris lain tepat di bawahnya):
sumber
Ini adalah entri Hapus ( CTRL+ D) dan Duplikat ( CMD+ SHIFT+ D) saya dari IDETextKeyBindingSet.plist saya. (di /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources)
Saya baru saja mengatur ini di Xcode 4.6.1 (berdasarkan jawaban dari user570753 di atas dan di tempat lain)
sumber
Setiap pengguna teks luhur yang ingin mencocokkan duplikatLineUp sublime dan duplikatLineDown di XCode, silakan tambahkan berikut ini ke file IDETextKeyBindingSet.plist Anda
sumber
Jika ada orang lain yang ditolak aksesnya untuk mengedit IDETextKeyBindingSet.plist, Anda dapat memberikan izin baca / tulis kepada diri Anda sendiri dengan:
sumber
Sekadar melengkapi jawaban Hailei, perintah yang paling berhasil bagi saya adalah:
Perintah yang disarankannya menyalin baris yang diinginkan dua baris di bawah, untuk saya.
sumber
Mendukung baris duplikat. (Ini berfungsi di Xcode 9.2)
sumber
Adapun Xcode 11 tidak ada yang berhasil untuk saya. Jawaban pertama berperilaku aneh karena memasukkan baris setelah baris berikutnya. Jawaban berikut, bagaimanapun, berhasil untuk saya.
sumber