Riga duplicata / elimina Xcode


128

Proveniente da Eclipse e utilizzato sempre per duplicare le linee, è piuttosto strano scoprire che Xcode non ha tale funzione. O lo fa?

So che è possibile cambiare le combinazioni di tasti a livello di sistema, ma non è quello che sto cercando.


possibile duplicato di Xcode: tasto di scelta
rapida

questa configurazione funziona per 9.2 stackoverflow.com/a/34195483/1348522
Zumry Mohamed

Risposte:


91

L'intero punto NON è usare le scorciatoie Cmd-C/ Cmd-V. Ho lo stesso problema che proviene da IntelliJ e poter duplicare le righe Cmd-Ded eliminarle con Cmd-Yè un grande risparmio di tempo.

Da allora mi ha infastidito. Tuttavia, sembra che qualcun altro abbia trovato una soluzione che funzioni .

In breve, crea un file ~/Library/KeyBindings/PBKeyBinding.dictcon il seguente contenuto e riavvia Xcode.

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

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

Ciò creerà due scorciatoie: Ctrl- Shift- Kper eliminare la riga corrente e Ctrl- Shift- Dper duplicare la riga corrente. Si noti che questo funzionerà solo se NON si utilizza un'associazione chiave personalizzata impostata in Xcode. Passa a "XCode Default" e le cose dovrebbero funzionare. Testato su XCode 3.2 su Snow Leopard.

Ulteriori informazioni sui tasti di scelta rapida di Mac OS X: http://funkworks.blogspot.it/2013/03/republishing-of-wwwerasetotheleftcompos.html


5
Questa dovrebbe essere la vera risposta. A proposito: se vuoi importare il collegamento cmd-d (elimina riga) da Eclipse, devi prima cambiare il collegamento Aggiungi segnalibro sotto il menu di modifica in XCode
Chris R

@joshperry, tutto ciò che funziona con Xcode 4+? Il Duplicatecomando (in Edit -> Duplicate) sembra essere "sempre" disattivato (e non destinato alla duplicazione della riga).
Blaz,

Ho usato OS X sin dal primo giorno e non ho mai saputo delle combinazioni di tasti. che bella caratteristica. Dai un'occhiata a questo bellissimo editor di combinazioni di tasti della GUI in cui mi sono imbattuto .
Alex Gray,

Trovate ulteriori informazioni sul sito degli sviluppatori di Apple .
aleclarson,

suonava benissimo, ma sembra che non abbia funzionato per me in Xcode 5.0.2 :(
voghDev

105

Per eliminare una riga : Ctrl-A per andare all'inizio della riga, quindi Ctrl-K per eliminarla e un'altra volta Ctrl-K per rimuovere la riga vuota. (Non uso Xcode molto spesso, ma ci sono abituato in Emacs e in altri input di testo con associazioni simili a Emacs, e sembra funzionare anche in Xcode.)

E per duplicare una riga : non conosco molti programmi che hanno un comando per quello, ma di solito uso solo Copia + Incolla - in Xcode è come CUA: Ctrl+A per andare all'inizio della riga, Shift+ per selezionare esso, Comando + Cper copiare e Comando + * Vper incollare due volte (una volta sovrascrivendo la linea e una volta aggiunta ad essa).

(da una persona che digita e modifica il testo continuamente, così spesso in programmi diversi, e occasionalmente si incazza di dover distrarsi con un widget stupido mentre fa una piccola correzione in un input di testo, che proprio non può evitare di ricordare queste sequenze e abitudini)


3
Funzionerà in tutte le applicazioni che utilizzano Cocoa per l'inserimento di testo, poiché è una caratteristica del Cocoa Text System. Ci sono molte altre scorciatoie come questa, un elenco di queste può essere trovato qui: hcs.harvard.edu/~jrus/Site/System%20Bindings.html :)
Ahti,

2
'yank' dovrebbe essere ctrl + Y su Mac moderni.
CarmeloS,

Comando-V per incollarlo e rientrare. Control -Y incollerà anche ma non rientrerà nel rientro del testo incollato.
Scott Gardner,

77

Elimina una riga come eclipse CTRL+ D(testato su Xcode 4.5.1):

Innanzitutto, modifica questi diritti:

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

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

Apri /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet.plistcon Xcode stesso e aggiungi questa nuova voce:

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

inserisci qui la descrizione dell'immagine

Riavvia Xcode e apri Xcode> Preferenze> KeyBindings. Trova la tua macro e definisci una scorciatoia:

inserisci qui la descrizione dell'immagine


5
Se vuoi aggiungere un modo per duplicare una riga, fai lo stesso, ma quando incolli il nuovo valore nel file IDETextKeyBindingSet.plist, incolla questo codice "selectLine :, copia :, moveToEndOfLine :, insertNewline :, paste :, deleteBackward: ".
jollyr0ger,

+1 Questa soluzione ha funzionato ma in Xcode 4.6.1 ^ D è in conflitto con altre combinazioni di tasti esistenti.
bernardn,

Come puoi ottenerlo per "Duplica riga corrente"?
Markus,

Questo non funziona in xcode 6. Solo la prima funzione viene chiamata dall'elenco
Mrug

1
Lo adoro, funziona come un incantesimo per me in XCode 6.3.1.
fwielstra,

9

Ho provato la soluzione dei collegamenti chiave, ma non sono riuscito a farlo funzionare. Tuttavia, la modifica dei collegamenti dei tasti XCode funziona come un incantesimo. Ecco come l'ho fatto.

Questa soluzione non altera il contenuto degli Appunti!

Apri i collegamenti chiave XCode:

testo alternativo

Nella finestra di dialogo Modifica script utente:

  1. Duplica lo script "Sposta riga in basso" e rinominalo
  2. Duplica il file "Move Line Down.scpt", rinomina lo script, seleziona il file tramite (doppio clic) in Script Editor
  3. Modifica lo script (Apre "AppleScript Editor") e rimuovi il passaggio "elimina (paragrafi startLine fino endLine)".
  4. Se non si desidera riavviare XCode, sembra che sia necessario rimuovere e aggiungere nuovamente lo script. Assicurati di avere "Output" impostato su "Discard Output", altrimenti avrai un "(null)" nel tuo file sorgente
  5. Ho leggermente modificato un po 'di più gli script per selezionare le linee giuste:

Linea duplicata:

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

Linea duplicata giù:

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

testo alternativo


2
Non menzionato chiaramente sopra, ci sono script esistenti per Elimina riga, Sposta riga in alto e Sposta riga in basso. La risposta accettata ha lo svantaggio che funziona solo se le tue associazioni di tasti sono impostate su XCode Default. L'uso degli script consente di mantenere le combinazioni di tasti personalizzate, poiché le combinazioni di tasti per gli script sono gestite separatamente da quelle per il resto di XCode.
Pathogen

7

OK, quindi ho funzionato per un po 'e poi all'improvviso si è rotto. Ora ho combinato da diversi post qui e ho trovato una soluzione che funziona per XCode 6.3.1.

  1. Vai a /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/con Finder.

  2. trova la cartella Risorse. Fare clic con il tasto destro del mouse, premere Ottieni informazioni, sbloccare l'impostazione di condivisione e autorizzazioni (premendo il blocco) e impostarla su Leggi e scrivi per tutti.

  3. Immettere la cartella e trovare il file IDETextKeyBindingSet.plist. Fare clic con il tasto destro del mouse, premere Ottieni informazioni, sbloccare l'impostazione di condivisione e autorizzazioni (premendo il blocco) e impostarla su Leggi e scrivi per tutti.

  4. Apri il file con XCode (impostazione predefinita)

  5. Trova le eliminazioni, fai clic con il pulsante destro del mouse e aggiungi una nuova riga. Denominalo ad esempio Elimina riga. Nel campo valore, digitare: selectLine:, deleteBackward:. (Questo può essere fatto anche per la linea duplicata: selectLine:,copy:,moveToEndOfLine:,insertNewline:,paste:,deleteBackward:)

  1. Avvia XCode, vai alle preferenze / combinazioni di tasti e cerca Elimina riga. Imposta scorciatoia. Godere.

6

Dato che Xcode 4 rende difficile l'implementazione usando le associazioni dei tasti, ho fatto ricorso all'uso di Keyboard Maestro (anche Quickeys dovrebbe funzionare bene, ma non è completamente compatibile con Lion). Ad esempio, ecco la mia scorciatoia da Maestro della tastiera (associata a ⌘-⇧-D):

http://bit.ly/thC6yf


3
"Compra ora per $ 36" ... che rubare) lol ... fino a quando non ho visto questo sul sito Maestro, ho pensato che potesse essere una buona soluzione
ycomp

@ycomp, ecco una soluzione gratuita .
Blaz,

5

Per eliminare la riga in Xcode 10.1, seguire i passaggi dello screenshot seguente per aggiungere un tasto di scelta rapida.

inserisci qui la descrizione dell'immagine


5

So che questo thread è piuttosto vecchio ma ho trovato un'altra soluzione utilizzando BetterTouchTool , puoi eseguire la sequenza Ctrl+ A, Ctrl+ K, Ctrl+ Kin un collegamento configurando in questo modo in BTT:

inserisci qui la descrizione dell'immagine

(Utilizzare il pulsante di azione aggiuntiva Allega per aggiungere il secondo e il terzo collegamento)

PS: proveniente da Eclipse dove Cmd+ Dè la riga di eliminazione ^^


4

Fare triplo clic per selezionare l'intera riga, command-c per selezionare e command-v due volte per duplicarla. Non è una funzione Xcode, è solo una parte del sistema operativo.


2
Clic del mouse e ancora peggio, triplo? Non è sicuramente la soluzione che la gente vuole usare le scorciatoie da tastiera.
Ixx

4

Usa gli script utente.

Ci sono ancora script per spostare ed eliminare le righe. Devi definire i vincoli dei tasti per quegli script (menu Script -> Modifica script utente ... , in xCode 3.2).

Per duplicare la riga, devi creare il tuo script. Ma è molto semplice! Duplica lo script "Sposta riga in basso" e rimuovi la riga che elimina il testo selezionato:

delete (paragraphs startLine through endLine)

3

C'è una soluzione per la duplicazione della linea XCode4 qui

Ho anche aggiunto la cancellazione della linea al plist:

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


3

Siamo su Xcode 9.0 e le combinazioni di tasti non funzionano ancora. Sospiro.

Ho trovato questo contenuto molto utile, quindi ripubblicandolo qui per riferimento futuro:

  1. Aperto /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/IDETextKeyBindingSet.plist
  2. Aggiungi il seguente frammento XML a questo file appena sopra il fondo </dict>
  3. Vai a Preferenze Xcode -> Associazioni dei tasti -> scheda Testo -> Scorri fino a visualizzare Duplicazione
  4. Fare clic su Duplica linea corrente, aggiungere un collegamento per esso, ad es. Cmnd + D (risolve eventuali associazioni duplicate)
  5. Apri 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

La soluzione di damien.flament funziona alla grande e potrebbe essere necessario impostare l' output su "Discard Output", vedere l'immagine seguente

Impostazione script utente

PS: non so come commentare la sua risposta.


2

Come detto sopra, chiudere XCode e inserire quanto segue ~/Library/Application Support/Xcode/Key Bindings/ <user>.pbxkeysall'interno <dict>nella <key>text</key>sezione:

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

Avvia XCode e divertiti con CTRL- SHIFT- De CTRL- SHIFT- K.
Se si desidera CTRL- De CTRL- K, utilizzare invece ^de ^knelle definizioni chiave. Assicurarsi che non vi siano associazioni di chiavi duplicate nel file.

Funziona bene per me con XCode 3.2


2

Questo è possibile utilizzando BetterTouchTool . CMD + D duplicherà una riga. Crea un nuovo collegamento come questo:

inserisci qui la descrizione dell'immagine

Utilizzare il pulsante di azione aggiuntiva Allega per aggiungere il secondo e il terzo collegamento


1

Se hai già personalizzato le vostre combinazioni di tasti Xcode, dovrete modificare il file: ~/Library/Application Support/Xcode/Key Bindings/<user>.pbxkeys. Basta aggiungere i due array (descritti sopra) al Root/textdizionario.


Hiya. Non lo seguo del tutto, il documento pbxkey è XML mentre il file ~ / Library / KeyBindings / PBKeyBinding.dict sopra descritto ha un formato completamente diverso (sembra un po 'come JSON). Non c'è una voce radice / testo nel documento pbxkeys. È perché sto usando una versione successiva?
Ben Clayton,

1

Tre passaggi per eliminare la riga corrente (vedi troppo tempo, ma fai molto velocemente: D)

Cmd+ : sposta alla fine della riga
Cmd+ Delete: cancella all'inizio della riga
Delete: cancella la riga vuota


0

Per Xcode 6.1 è arrivato a Xcode> Preferenze> KeyBindings> Testo E c'è "Elimina alla fine della riga" e assegnare una chiave desiderata.



0

Tuttavia, non esiste un modo integrato per duplicare le righe, a partire da Xcode 9. E le combinazioni di tasti personalizzate sembrano avere problemi.

Aggiornamento: Xcode 10.0 beta 6 (10L232m) è lo stesso.


0

Vai a questo indirizzo:

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

e quindi copiare il file IDETextKeyBindingSet.plist in alcuni file, quindi aprire il file copiato e inserirlo

selectLine :, copia :, incolla :, incolla: come questa immagine inserisci qui la descrizione dell'immagine e salvala e sostituisci il file copiato in questo indirizzo /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet

quindi riavvia xcode, apri le prefetture xcode, vai alla scheda di associazione dei tasti, cerca una riga duplicata (personalizzata) e definisci un tasto breve come immagine qui sotto

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


Dalla recensione: Ciao, questo post non sembra fornire una risposta di qualità alla domanda. Modifica la tua risposta e migliorala oppure pubblicala come commento.
sɐunıɔ ןɐ qɐp,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.