Xcode dupliquer / supprimer la ligne

128

Venant d'Eclipse et ayant été utilisé pour dupliquer des lignes tout le temps, il est assez étrange de découvrir que Xcode n'a pas une telle fonction. Ou le fait-il?

Je sais qu'il est possible de modifier les raccourcis clavier à l'échelle du système, mais ce n'est pas ce que je recherche.

Été
la source
duplication possible de Xcode: touche de raccourci de suppression de ligne
joshperry
cette configuration fonctionne pour 9.2 stackoverflow.com/a/34195483/1348522
Zumry Mohamed

Réponses:

91

Le but n'est PAS d'utiliser les raccourcis Cmd-C/ Cmd-V. J'ai le même problème venant d'IntelliJ, et pouvoir simplement dupliquer des lignes Cmd-Det les supprimer avec Cmd-Yest un gain de temps considérable.

Cela me dérange depuis. Cependant, il semble que quelqu'un d'autre ait trouvé une solution qui fonctionne.

En bref, créez un fichier ~/Library/KeyBindings/PBKeyBinding.dictavec le contenu suivant et redémarrez Xcode.

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

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

Cela créera deux raccourcis: Ctrl- Shift- Kpour supprimer la ligne courante et Ctrl- Shift- Dpour dupliquer la ligne courante. Veuillez noter que cela ne fonctionnera que si vous n'utilisez PAS un jeu de raccourcis clavier personnalisé dans Xcode. Passez à "XCode Default" et les choses devraient fonctionner. Testé sur XCode 3.2 sur Snow Leopard.

Plus d'informations sur les raccourcis clavier de Mac OS X: http://funkworks.blogspot.it/2013/03/republishing-of-wwwerasetotheleftcompos.html

Frank Schröder
la source
5
Cela devrait être la vraie réponse. Btw - si vous souhaitez importer le raccourci cmd-d (supprimer la ligne) d'Eclipse, vous devrez d'abord modifier le raccourci Ajouter un signet sous le menu d'édition dans XCode
Chris R
@joshperry, tout ce qui fonctionne avec Xcode 4+? La Duplicatecommande (in Edit -> Duplicate) semble être "toujours" grisée (et non destinée à la duplication de ligne).
Blaz
J'utilise OS X depuis le premier jour et je n'ai jamais entendu parler des raccourcis clavier. quelle fonctionnalité intéressante. Jetez un œil à ce très bel éditeur de raccourcis clavier GUI sur lequel je suis tombé .
Alex Gray
Plus d'informations sur le site des développeurs d'Apple .
aleclarson
sonnait bien, mais il semble que cela
n'a
105

Pour supprimer une ligne : Ctrl-A pour aller au début de la ligne, puis Ctrl-K pour la supprimer, et une autre fois Ctrl-K pour supprimer la ligne vide. (Je n'utilise pas Xcode très souvent, mais je suis habitué à cela dans Emacs et d'autres entrées de texte avec des liaisons de type Emacs, et cela semble fonctionner aussi dans Xcode.)

Et pour dupliquer une ligne : je ne connais pas beaucoup de programmes qui ont une commande pour cela, mais généralement j'utilise simplement Copier + Coller - dans Xcode, c'est comme CUA: Ctrl+A pour aller au début de la ligne, Shift+ pour sélectionner il, Command + Cpour copier et Command + * Vpour coller deux fois (une fois en remplaçant la ligne et une fois en y ajoutant).

(d'une personne qui tape et modifie du texte tout le temps, si souvent dans des programmes différents, et qui s'énerve parfois d'avoir à se distraire avec un widget stupide tout en faisant une petite correction dans une saisie de texte, qu'il ne peut tout simplement pas éviter de se souvenir de ces séquences et habitudes)

Tom Alsberg
la source
3
Cela fonctionnera dans toutes les applications utilisant Cocoa pour la saisie de texte, car c'est une fonctionnalité du système de texte Cocoa. Il y a beaucoup d'autres raccourcis comme celui-ci, une liste d'entre eux peut être trouvée ici: hcs.harvard.edu/~jrus/Site/System%20Bindings.html :)
Ahti
2
«yank» doit être ctrl + Y sur les Mac modernes.
CarmeloS
Command-V pour le coller et le ré-indenter. Contrôle -Y collera également mais ne réindentera pas le texte collé.
Scott Gardner
77

Supprimez une ligne comme eclipse CTRL+ D(testé sur Xcode 4.5.1):

Tout d'abord, modifiez ces droits:

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

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

Ouvrez /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet.plistavec Xcode lui-même et ajoutez cette nouvelle entrée:

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

entrez la description de l'image ici

Redémarrez Xcode et ouvrez Xcode> Préférences> KeyBindings. Trouvez votre macro et définissez un raccourci:

entrez la description de l'image ici

Ouvrir un
la source
5
Si vous souhaitez ajouter un moyen de dupliquer une ligne, faites de même, mais lorsque vous collez la nouvelle valeur dans le fichier IDETextKeyBindingSet.plist, collez ce code "selectLine :, copy :, moveToEndOfLine :, insertNewline :, paste :, deleteBackward: ".
jollyr0ger
+1 Cette solution fonctionnait mais dans Xcode 4.6.1 ^ D était en conflit avec d'autres raccourcis clavier existants.
bernardn
Comment pouvez-vous obtenir cela pour "Dupliquer la ligne actuelle"?
Markus
Cela ne fonctionne pas dans xcode 6. Seule la première fonction est appelée dans la liste
Mrug
1
J'adore ça, ça marche comme un charme pour moi sous XCode 6.3.1.
fwielstra
9

J'ai essayé la solution de raccourcis clavier, mais je n'ai pas pu la faire fonctionner. Cependant, l'édition de mes raccourcis clavier XCode fonctionne comme un charme. Voici comment je l'ai fait.

Cette solution ne modifie pas le contenu du Presse-papiers!

Ouvrez les liaisons de touches XCode:

texte alternatif

Dans la boîte de dialogue Modifier les scripts utilisateur:

  1. Dupliquer le script "Déplacer la ligne vers le bas" et le renommer
  2. Dupliquer le fichier "Move Line Down.scpt", renommer le script, sélectionner le fichier via (double clic) dans Script Editor
  3. Editez le script (Ouvre "AppleScript Editor") et supprimez le passage "delete (paragraphes startLine à endLine)".
  4. Si vous ne souhaitez pas redémarrer XCode, vous semblez devoir supprimer et rajouter le script. Assurez-vous que vous avez défini "Sortie" sur "Supprimer la sortie", sinon vous aurez un "(nul)" dans votre fichier source
  5. J'ai légèrement modifié les scripts un peu plus pour avoir les bonnes lignes sélectionnées:

Dupliquer la ligne:

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

Dupliquer la ligne vers le bas:

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

texte alternatif

Léviathan
la source
2
Non mentionné clairement ci-dessus, il existe des scripts existants pour Supprimer la ligne, Déplacer la ligne vers le haut et Déplacer la ligne vers le bas. La réponse acceptée présente l'inconvénient qu'elle ne fonctionne que si vos raccourcis clavier sont définis sur XCode Default. L'utilisation de scripts vous permet de conserver vos raccourcis clavier personnalisés, car les raccourcis clavier des scripts sont traités séparément de ceux du reste de XCode.
Pathogen
7

OK, donc j'ai fait fonctionner ça pendant un moment et puis soudainement ça s'est cassé. Maintenant, j'ai combiné à partir de différents articles ici et j'ai trouvé une solution qui fonctionne pour XCode 6.3.1.

  1. Accédez à /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/avec Finder.

  2. recherchez le dossier nommé Resources. Faites un clic droit dessus, appuyez sur Obtenir des informations, déverrouillez le paramètre de partage et d'autorisations (en appuyant sur le verrou) et réglez-le sur Lecture et écriture pour tous.

  3. Entrez dans le dossier et recherchez le fichier IDETextKeyBindingSet.plist. Faites un clic droit dessus, appuyez sur Obtenir des informations, déverrouillez le paramètre de partage et d'autorisations (en appuyant sur le verrou) et réglez-le sur Lecture et écriture pour tous.

  4. Ouvrez le fichier avec XCode (par défaut)

  5. Recherchez les suppressions, faites un clic droit et ajoutez une nouvelle ligne. Nommez-le par exemple Supprimer la ligne. Dans le domaine de la valeur, tapez: selectLine:, deleteBackward:. (Cela peut également être fait pour la ligne en double: selectLine:,copy:,moveToEndOfLine:,insertNewline:,paste:,deleteBackward:)

  1. Démarrez XCode, accédez à préférences / raccourcis clavier et recherchez Supprimer la ligne. Définissez un raccourci. Prendre plaisir.
Joakim
la source
6

Comme Xcode 4 rend cela difficile à mettre en œuvre à l'aide de raccourcis clavier, j'ai eu recours à Keyboard Maestro ( Quickeys devrait également fonctionner correctement, mais il n'est pas entièrement compatible avec Lion). Par exemple, voici mon raccourci clavier Maestro (lié à ⌘-⇧-D):

http://bit.ly/thC6yf

roue
la source
3
"Achetez maintenant pour 36 $" ... quel vol) lol ... jusqu'à ce que j'aie vu ça sur le site Maestro, j'ai pensé que ça pourrait être une bonne solution
ycomp
@ycomp, voici une solution gratuite .
Blaz
5

Pour supprimer la ligne dans Xcode 10.1, veuillez suivre les étapes de la capture d'écran ci-dessous pour ajouter une touche de raccourci.

entrez la description de l'image ici

Gagandeep Gambhir
la source
5

Je sais que ce fil est assez ancien mais j'ai trouvé une autre solution en utilisant BetterTouchTool , vous pouvez exécuter la séquence Ctrl+ A, Ctrl+ K, Ctrl+ Kdans un raccourci en configurant comme ceci dans BTT:

entrez la description de l'image ici

(Utilisez le bouton d'action supplémentaire Joindre pour ajouter le deuxième et le troisième raccourci)

PS: Venant d'Eclipse où Cmd+ Dest supprimer la ligne ^^

Laurent Meyer
la source
4

Cliquez trois fois pour sélectionner la ligne entière, commande-c pour sélectionner et commande-v deux fois pour la dupliquer. Ce n'est pas une fonction Xcode, c'est juste une partie du système d'exploitation.

Paul Tomblin
la source
2
Clic de souris et pire encore, triple? Ce n'est certainement pas la solution que recherchent les personnes souhaitant utiliser des raccourcis clavier.
Ixx
4

Utilisez des scripts utilisateur.

Il existe encore des scripts pour déplacer et supprimer des lignes. Vous devez définir des raccourcis clavier pour ces scripts (menu Scripts -> Modifier les scripts utilisateur ... , sous xCode 3.2).

Pour dupliquer la ligne, vous devez créer votre propre script. Mais c'est très simple! Dupliquer le script "Déplacer la ligne vers le bas" et supprimer la ligne qui supprime le texte sélectionné:

delete (paragraphs startLine through endLine)
Damien Flament
la source
3

Il existe une solution pour la duplication de ligne XCode4 ici

J'ai également ajouté la suppression de ligne au plist:

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

MartinMcB
la source
3

Nous sommes sur Xcode 9.0 et les raccourcis clavier ne fonctionnent toujours pas. Soupir.

J'ai trouvé cet essentiel très utile, alors republiez-le ici pour référence future:

  1. Ouvert /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/IDETextKeyBindingSet.plist
  2. Ajoutez l'extrait de code XML suivant à ce fichier juste au-dessus du bas </dict>
  3. Allez dans les préférences Xcode -> Key Bindings -> Onglet Texte -> Faites défiler jusqu'à ce que vous voyiez Duplication
  4. Cliquez sur Dupliquer la ligne actuelle, ajoutez un raccourci pour elle, par exemple. Cmnd + D (résoudre les liaisons en double)
  5. Ouvrez 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
la source
3

Pas besoin de modifier Xcode. Vous pouvez simplement utiliser l'extension Xcode Linex

entrez la description de l'image ici

Aladin
la source
impressionnant ! greate solution
Thomas Besnehard
2

La solution de damien.flament fonctionne très bien et vous devrez peut-être définir la sortie sur "Supprimer la sortie" voir la photo ci-dessous

Paramètres des scripts utilisateur

PS: Je ne sais pas comment commenter sa réponse.

palaniraja
la source
2

Comme indiqué ci-dessus, fermez XCode et insérez le suivant à l' ~/Library/Application Support/Xcode/Key Bindings/ <user>.pbxkeysintérieur <dict>de la <key>text</key>section:

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

Démarrez XCode et appréciez CTRL- SHIFT- Det CTRL- SHIFT- K.
Si vous voulez CTRL- Det CTRL- K, utilisez plutôt ^det ^kdans les définitions de clé. Assurez-vous qu'il n'y a pas de raccourcis clavier en double dans le fichier.

Fonctionne bien pour moi avec XCode 3.2

Askh
la source
2

Ceci est possible en utilisant BetterTouchTool . CMD + D dupliquera une ligne. Créez un nouveau raccourci comme celui-ci:

entrez la description de l'image ici

Utilisez le bouton d'action supplémentaire Joindre pour ajouter le deuxième et le troisième raccourci

Adam Studenic
la source
1

Si vous avez déjà personnalisé vos raccourcis clavier Xcode, vous devrez modifier le fichier: ~/Library/Application Support/Xcode/Key Bindings/<user>.pbxkeys. Ajoutez simplement les deux tableaux (décrits ci-dessus) au Root/textdictionnaire.

MonsieurDart
la source
Hiya. Je ne suis pas tout à fait cela, le document pbxkey est XML alors que le fichier ~ / Library / KeyBindings / PBKeyBinding.dict décrit ci-dessus est un format entièrement différent (ressemble un peu à JSON). Il n'y a pas d'entrée racine / texte dans le document pbxkeys. Est-ce parce que j'utilise une version plus récente?
Ben Clayton
1

Trois étapes pour supprimer la ligne actuelle (voir trop long, mais faire très vite: D)

Cmd+ : passer à la fin de la ligne
Cmd+ Delete: supprimer au début de la ligne
Delete: supprimer la ligne vide

huync
la source
0

Pour Xcode 6.1, accédez à Xcode> Préférences> KeyBindings> Text Et il y a "Delete to End of Line" et attribuez une touche que vous voulez.

SpyZip
la source
0

Le plugin de suppression de ligne XCodePlus est un XCode qui fait cela pour vous. Il était pré-installé avec le gestionnaire de paquets Alcatraz ...

https://github.com/payliu/XcodePlus

Joakim
la source
0

Il n'y a toujours pas de moyen intégré de dupliquer des lignes, à partir de Xcode 9. Et les raccourcis clavier personnalisés semblent poser des problèmes.

Mise à jour: Xcode 10.0 beta 6 (10L232m) est le même.

Erkanyildiz
la source
0

Allez à cette adresse:

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

puis copiez le fichier IDETextKeyBindingSet.plist dans un endroit, puis ouvrez le fichier copié et insérez

selectLine :, copier :, coller :, coller: comme cette image entrez la description de l'image ici et enregistrez-la et remplacez le fichier copié dans cette adresse /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet

puis redémarrez xcode, ouvrez les préférences xcode, accédez à l'onglet de liaison de touches, recherchez la ligne en double (personnalisée) et définissez une touche courte comme l'image ci-dessous

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

Khatereh
la source
De l'avis: Salut, cet article ne semble pas fournir une réponse de qualité à la question. Veuillez modifier votre réponse et l'améliorer, ou simplement la publier sous forme de commentaire.
sɐunıɔ ןɐ qɐp