Duplikat / hapus baris Xcode

128

Berasal dari Eclipse dan telah digunakan untuk menduplikasi baris sepanjang waktu, cukup aneh mengetahui bahwa Xcode tidak memiliki fungsi seperti itu. Atau apakah itu?

Saya tahu itu mungkin untuk mengubah keybindings lebar sistem tapi bukan itu yang saya cari.

Musim panas
sumber
kemungkinan duplikat Xcode: Hapus hot-key baris
joshperry
pengaturan ini Berfungsi untuk 9.2 stackoverflow.com/a/34195483/1348522
Zumry Mohamed

Jawaban:

91

Intinya adalah TIDAK untuk menggunakan Cmd-C/ Cmd-Vpintas. Saya memiliki masalah yang sama yang berasal dari IntelliJ, dan bisa hanya menduplikasi baris Cmd-Ddan menghapusnya dengan Cmd-Yadalah penghemat waktu yang besar.

Sejak itu mengganggu saya. Namun, sepertinya orang lain telah menemukan solusi yang berfungsi.

Singkatnya, buat file ~/Library/KeyBindings/PBKeyBinding.dictdengan konten berikut dan mulai ulang Xcode.

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

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

Ini akan membuat dua pintasan: Ctrl- Shift- Kuntuk menghapus baris saat ini dan Ctrl- Shift- Duntuk menduplikasi baris saat ini. Harap dicatat bahwa ini hanya akan berfungsi jika Anda TIDAK menggunakan pengikatan kunci kustom yang diatur dalam Xcode. Beralih ke "XCode Default" dan semuanya akan berfungsi. Diuji pada XCode 3.2 pada Snow Leopard.

Informasi lebih lanjut tentang ikatan kunci Mac OS X: http://funkworks.blogspot.it/2013/03/republishing-of-wwwerasetotheleftcompos.html

Frank Schröder
sumber
5
Ini harus menjadi jawaban nyata. Btw - jika Anda ingin mengimpor pintasan cmd-d (delete line) dari Eclipse, Anda harus terlebih dahulu mengubah pintasan Tambahkan Bookmark di bawah menu edit di XCode
Chris R
@joshperry, apa pun yang berfungsi dengan Xcode 4+? The Duplicateperintah (di Edit -> Duplicate) tampaknya akan "selalu" berwarna abu-abu (dan tidak dimaksudkan untuk baris duplikasi).
Blaz
Saya telah menggunakan OS X sejak hari pertama dan tidak pernah tahu tentang binding utama. fitur yang keren. Lihatlah editor pengikatan kunci GUI yang sangat bagus yang saya alami .
Alex Gray
Menemukan informasi lebih lanjut tentang situs pengembang Apple .
aleclarson
kedengarannya hebat, tetapi sepertinya itu tidak berhasil untuk saya di Xcode 5.0.2 :(
voghDev
105

Untuk menghapus baris : Ctrl-A untuk pergi ke awal baris, lalu Ctrl-K untuk menghapusnya, dan lain kali Ctrl-K untuk menghapus baris kosong. (Saya tidak terlalu sering menggunakan Xcode, tapi saya sudah terbiasa dengan itu di Emacs dan input teks lainnya dengan binding seperti Emacs, dan sepertinya juga berfungsi di Xcode.)

Dan untuk menduplikasi baris : Saya tidak tahu banyak program yang memiliki perintah untuk itu, tetapi biasanya saya hanya menggunakan Salin + Tempel - di Xcode itu seperti CUA: Ctrl+A untuk pergi ke awal baris, Shift+ untuk memilih itu, Command + Cuntuk menyalin dan Command + *V untuk menempel dua kali (sekali menimpa garis dan sekali menambahkannya).

(dari orang yang mengetik dan mengedit teks sepanjang waktu, sering di program yang berbeda, dan kadang-kadang kesal karena harus mengalihkan perhatiannya dengan widget bodoh sambil membuat sedikit koreksi dalam input teks, sehingga dia tidak bisa menghindari mengingat urutan ini dan kebiasaan)

Tom Alsberg
sumber
3
Ini akan berfungsi di semua aplikasi menggunakan Kakao untuk input teks, karena ini merupakan fitur dari Kakao Sistem Teks. Ada banyak jalan pintas seperti ini, daftar mereka dapat ditemukan di sini: hcs.harvard.edu/~jrus/Site/System%20Bindings.html :)
Ahti
2
'yank' harus berupa ctrl + Y di Mac modern.
CarmeloS
Command-V untuk menempelkannya dan menempel kembali. Kontrol -Y juga akan menempel tetapi tidak mengubah kembali teks yang disisipkan.
Scott Gardner
77

Hapus garis seperti gerhana CTRL+D (diuji pada Xcode 4.5.1):

Pertama-tama, ubah hak-hak ini:

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

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

Buka /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet.plistdengan Xcode sendiri dan tambahkan entri baru ini:

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

masukkan deskripsi gambar di sini

Mulai ulang Xcode dan buka Xcode> Preferensi> KeyBindings. Temukan makro Anda dan tentukan shortkey:

masukkan deskripsi gambar di sini

Buka sebuah
sumber
5
Jika Anda ingin menambahkan cara untuk menggandakan garis, lakukan hal yang sama, tetapi ketika menempelkan nilai baru dalam file IDETextKeyBindingSet.plist, tempel kode ini "selectLine :, salin :, moveToEndOfLine :, insertNewline :, paste :, deleteBackward: ".
jollyr0ger
+1 Solusi ini berfungsi tetapi dalam Xcode 4.6.1 ^ D bertentangan dengan binding kunci lain yang ada.
bernardn
Bagaimana Anda bisa mendapatkan itu untuk 'Gandakan baris saat ini'?
Markus
Ini tidak berfungsi di xcode 6. Hanya fungsi pertama yang dipanggil dari daftar
Mrug
1
Saya suka itu, bekerja seperti pesona bagi saya di bawah XCode 6.3.1.
fwielstra
9

Saya mencoba solusi binding utama, tetapi saya tidak bisa membuatnya bekerja. Namun mengedit binding kunci XCode saya berfungsi seperti pesona. Begini cara saya membuatnya.

Solusi ini tidak mengubah isi dari Clipboard!

Buka Binding Kunci XCode:

teks alternatif

Dalam Dialog Edit User Scripts:

  1. Gandakan skrip "Move Line Down" dan ganti namanya
  2. Gandakan file "Move Line Down.scpt", ganti nama skrip, pilih file via (klik dua kali) di Script Editor
  3. Edit skrip (Buka "AppleScript Editor") dan hapus bagian "delete (paragraf startLine hingga endLine)".
  4. Jika Anda tidak ingin me-restart XCode, Anda tampaknya harus menghapus dan menambahkan kembali skrip. Pastikan Anda memiliki "Output" yang diatur ke "Buang Output", jika tidak, Anda akan memiliki "(null)" di file sumber Anda
  5. Saya sedikit memodifikasi skrip sedikit lebih banyak untuk memilih garis yang tepat:

Duplikat Line Up:

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

Duplikat Line Down:

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

teks alternatif

raksasa
sumber
2
Tidak disebutkan dengan jelas di atas, ada skrip yang ada untuk Delete Line, Move Line Up, dan Move Line Down. Jawaban yang diterima memiliki kelemahan yang hanya berfungsi jika Anda telah mengikat kunci Anda ke Default XCode. Menggunakan skrip memungkinkan Anda menjaga ikatan kunci khusus Anda, karena ikatan kunci untuk skrip ditangani secara terpisah dari yang lain untuk XCode.
Pathogen
7

OK, jadi saya punya ini berfungsi untuk sementara waktu dan kemudian tiba-tiba itu rusak. Sekarang saya telah menggabungkan dari berbagai posting di sini dan menemukan solusi yang berfungsi untuk XCode 6.3.1.

  1. Pergi ke /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/dengan Finder.

  2. temukan folder bernama Resources. Klik kanan, tekan Dapatkan Info, buka kunci pengaturan berbagi & izin (Dengan menekan kunci) dan atur ke Baca & Tulis untuk semua.

  3. Masukkan folder dan temukan file IDETextKeyBindingSet.plist. Klik kanan, tekan Dapatkan Info, buka kunci pengaturan berbagi & izin (Dengan menekan kunci) dan atur ke Baca & Tulis untuk semua.

  4. Buka file dengan XCode (Default)

  5. Temukan penghapusan, klik kanan dan tambahkan baris baru. Beri nama misalnya Hapus Baris. Di bidang nilai, ketik: selectLine:, deleteBackward:. (Ini juga bisa dilakukan untuk duplikat baris: selectLine:,copy:,moveToEndOfLine:,insertNewline:,paste:,deleteBackward:)

  1. Mulai XCode, buka preferensi / keybindings dan cari Delete Line. Tetapkan pintasan. Nikmati.
Joakim
sumber
6

Karena Xcode 4 membuat ini sulit untuk diimplementasikan menggunakan binding kunci, saya terpaksa menggunakan Keyboard Maestro ( Quickeys seharusnya bekerja dengan baik juga, tetapi itu tidak sepenuhnya kompatibel dengan Lion). Misalnya, berikut ini pintasan Keyboard Maestro saya (terikat ke ⌘-⇧-D):

http://bit.ly/thC6yf

raheel
sumber
3
"Beli sekarang seharga $ 36" ... mencuri sekali ... lol ... sampai aku melihat ini di situs Maestro, kupikir itu mungkin solusi yang bagus
ycomp
@comp, inilah solusi gratis .
Blaz
5

Untuk menghapus baris dalam Xcode 10.1, silakan ikuti langkah-langkah tangkapan layar di bawah ini untuk menambahkan tombol pintas.

masukkan deskripsi gambar di sini

Gagandeep Gambhir
sumber
5

Saya tahu bahwa utas ini cukup lama tetapi saya menemukan solusi lain menggunakan BetterTouchTool , Anda dapat menjalankan urutan Ctrl+ A, Ctrl+ K, Ctrl+ Kdalam satu pintasan dengan mengkonfigurasi seperti ini di BTT:

masukkan deskripsi gambar di sini

(Gunakan Tombol Lampirkan Tindakan Tambahan untuk menambahkan pintasan kedua dan ketiga)

PS: Berasal dari Eclipse di mana Cmd+ Dadalah menghapus baris ^^

Laurent Meyer
sumber
4

Klik tiga kali untuk memilih seluruh baris, perintah-c untuk memilih dan perintah-v dua kali untuk menduplikatnya. Ini bukan fungsi Xcode, itu hanya bagian dari OS.

Paul Tomblin
sumber
2
Klik mouse dan bahkan worser, rangkap tiga? Itu jelas bukan solusi yang dicari orang yang menggunakan pintasan keyboard.
Ixx
4

Gunakan skrip pengguna.

Ada skrip untuk memindahkan dan menghapus baris. Anda harus mendefinisikan mengikat kunci bagi mereka script (menu Script -> Sunting Pengguna Script ... , di bawah Xcode 3.2).

Untuk menduplikasi baris, Anda harus membuat skrip sendiri. Tapi ini sangat sederhana! Gandakan skrip "Move Line Down" dan hapus baris yang menghapus teks yang dipilih:

delete (paragraphs startLine through endLine)
Damien Flament
sumber
3

Ada solusi untuk duplikasi garis XCode4 di sini

Saya juga menambahkan penghapusan baris ke plist:

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

MartinMcB
sumber
3

Kami berada di Xcode 9.0 dan keybindings masih tidak berfungsi. Mendesah.

Saya menemukan inti ini sangat membantu sehingga memposting ulang di sini untuk referensi di masa mendatang:

  1. Buka /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/IDETextKeyBindingSet.plist
  2. Tambahkan potongan XML berikut ke file ini tepat di atas bagian bawah </dict>
  3. Pergi ke preferensi Xcode -> Ikatan Kunci -> tab Teks -> Gulir sampai Anda melihat Duplikasi
  4. Klik pada Duplicate Current Line, tambahkan jalan pintas untuk itu, misalnya. Cmnd + D (selesaikan binding duplikat apa pun)
  5. Buka 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>

Jannie Theunissen
sumber
3

Tidak perlu memodifikasi Xcode. Anda bisa menggunakan ekstensi Xcode Linex

masukkan deskripsi gambar di sini

Aladin
sumber
luar biasa! solusi greate
Thomas Besnehard
2

Solusi oleh damien.flament bekerja sangat baik dan Anda mungkin perlu mengatur output ke "Keluarkan Output" lihat gambar di bawah ini

Pengaturan skrip pengguna

PS: Saya tidak tahu bagaimana mengomentari jawabannya.

palaniraja
sumber
2

Seperti yang dikatakan di atas, tutup XCode dan masukkan berikut ke ~/Library/Application Support/Xcode/Key Bindings/ <user>.pbxkeysdalam <dict>di <key>text</key>bagian:

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

Mulai XCode dan nikmati CTRL- SHIFT- Ddan CTRL- SHIFT- K.
Jika Anda ingin CTRL- Ddan CTRL- K, gunakan ^ddan^k dalam definisi kunci sebagai gantinya. Pastikan tidak ada ikatan kunci duplikat dalam file.

Bekerja dengan baik untuk saya dengan XCode 3.2

askh
sumber
2

Ini dimungkinkan menggunakan BetterTouchTool . CMD + D akan menduplikasi satu baris. Buat pintasan baru seperti ini:

masukkan deskripsi gambar di sini

Gunakan Tombol Lampirkan Tindakan Tambahan untuk menambahkan pintasan kedua dan ketiga

Adam Studenic
sumber
1

Jika Anda sudah disesuaikan binding kunci Xcode Anda, Anda harus mengedit file: ~/Library/Application Support/Xcode/Key Bindings/<user>.pbxkeys. Cukup tambahkan dua array (dijelaskan di atas) ke Root/textkamus.

MonsieurDart
sumber
Hai Saya tidak cukup mengikuti ini, dokumen pbxkey adalah XML sedangkan file ~ / Library / KeyBindings / PBKeyBinding.dict yang dijelaskan di atas adalah format yang sama sekali berbeda (terlihat sedikit seperti JSON). Tidak ada entri Root / teks dalam dokumen pbxkeys. Apakah karena saya menggunakan versi yang lebih baru?
Ben Clayton
1

Tiga langkah untuk menghapus baris saat ini (lihat terlalu lama, tetapi lakukan sangat cepat: D)

Cmd+ : pindah ke akhir baris
Cmd+ Delete: hapus untuk memulai baris
Delete: hapus baris kosong

Huync
sumber
0

Untuk Xcode 6.1 sampai ke Xcode> Preferences> KeyBindings> Text Dan ada "Delete to End of Line" dan berikan kunci yang Anda inginkan.

SpyZip
sumber
0

Plugin penghapusan XCodePlus, adalah XCode yang melakukan ini untuk Anda. Itu datang pra diinstal dengan manajer paket Alcatraz ...

https://github.com/payliu/XcodePlus

Joakim
sumber
0

Masih tidak ada cara bawaan untuk menduplikasi baris, pada Xcode 9. Dan binding kunci kustom tampaknya memiliki masalah.

Pembaruan: Xcode 10.0 beta 6 (10L232m) adalah sama.

erkanyildiz
sumber
0

Pergi ke alamat ini:

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

dan kemudian salin file IDETextKeyBindingSet.plist di suatu tempat dan kemudian buka file yang disalin dan masukkan

selectLine :, salin :, rekat :, rekat: seperti gambar ini masukkan deskripsi gambar di sini dan simpan dan ganti file yang disalin di alamat ini / Aplikasi / Xcode.app/Isi

kemudian restart xcode, buka xcode preferensi, buka tab keybinding, cari duplikat baris (dikustomisasi) dan tentukan kunci pendek untuk itu seperti gambar di bawah ini

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

Khatereh
sumber
Dari Ulasan: Hai, postingan ini sepertinya tidak memberikan jawaban yang berkualitas untuk pertanyaan itu. Harap edit jawaban Anda dan perbaiki, atau cukup kirimkan sebagai komentar.
sɐunıɔ ןɐ qɐp