web-dev-qa-db-fra.com

Xcode dupliquer/supprimer la ligne

Venant d’Eclipse et ayant l'habitude de dupliquer des lignes tout le temps, il est assez étrange de constater que Xcode n'a pas cette fonction. Ou le fait-il?

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

119
Summer

L’important n’est PAS d’utiliser les raccourcis Cmd-C/Cmd-V. Le même problème vient d'IntelliJ et pouvoir dupliquer des lignes avec Cmd-D et les supprimer avec Cmd-Y permet de gagner beaucoup de temps.

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

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

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

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

Cela créera deux raccourcis: Ctrl-Shift-K pour supprimer la ligne en cours et Ctrl-Shift-D pour dupliquer la ligne en cours. Veuillez noter que cela fonctionnera seulement si vous utilisez PAS avec une liaison de clé personnalisée définie dans Xcode. Basculez sur "Xcode par défaut" et tout devrait fonctionner. Testé sur XCode 3.2 sur Snow Leopard.

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

90
Frank Schröder

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

Et pour dupliquer une ligne : je ne connais pas beaucoup de programmes qui ont une commande pour cela, mais d'habitude je n'utilise que Copier + Coller - dans Xcode c'est comme à la CUA: Ctrl+A pour aller au début de la ligne, Shift+ pour le sélectionner, Commande +C copier et Commande + *V coller deux fois (une fois la ligne remplacée et une fois ajoutée).

(d'une personne qui tape et édite du texte tout le temps, si souvent dans des programmes différents, et qui s'énerve de temps en temps de se laisser distraire par un widget idiot tout en apportant une petite correction à une entrée de texte, qu'il ne peut tout simplement pas éviter de se souvenir de ces séquences et habitudes)

99
Tom Alsberg

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

Tout d'abord, changez 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.plist avec Xcode lui-même et ajoutez cette nouvelle entrée:

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

enter image description here

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

enter image description here

75
Opena

J'ai essayé la solution de raccourcis clavier, mais je ne pouvais pas la faire fonctionner. Cependant, éditer 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 raccourcis clavier XCode:

alt text

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

  1. Dupliquez le script "Move Line Down" et renommez-le
  2. Dupliquez le fichier "Move Line Down.scpt", renommez le script, sélectionnez le fichier via (double-clic) dans l'éditeur de script
  3. Editez le script (ouvre "Editeur AppleScript") et supprimez le passage "delete (paragraphes startLine par endLine)".
  4. Si vous ne souhaitez pas redémarrer XCode, vous semblez devoir supprimer et rajouter le script. Assurez-vous que "Output" est réglé sur "Discard Output", sinon vous aurez un "(null)" 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

Duplicate 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

alt text

9
leviathan

OK, alors ça a fonctionné pendant un moment, puis tout à coup, ça a cassé. Maintenant, j'ai combiné de différents articles ici et trouvé une solution qui fonctionne pour XCode 6.3.1.

  1. Allez à /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/ avec le Finder.

  2. trouvez le dossier nommé Ressources. Cliquez dessus avec le bouton droit de la souris, appuyez sur Lire les 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 le dossier et recherchez le fichier IDETextKeyBindingSet.plist. Cliquez dessus avec le bouton droit de la souris, appuyez sur Lire les 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, cliquez avec le bouton droit de la souris et ajoutez une nouvelle ligne. Nommez-le par exemple Supprimer la ligne. Dans le champ de valeur, tapez: selectLine:, deleteBackward:. (Cela peut également être fait pour la ligne en double: selectLine:,copy:,moveToEndOfLine:,insertNewline:,paste:,deleteBackward:)

  1. Lancez XCode, allez dans preferences/keybindings et recherchez Supprimer la ligne. Définir un raccourci. Prendre plaisir.
6
Joakim

Comme Xcode 4 rend cela difficile à mettre en œuvre avec des raccourcis clavier, j’ai eu recours à Keyboard Maestro ( Quickeys devrait bien fonctionner aussi, mais ce n’est pas entièrement compatible avec Lion). Par exemple, voici mon raccourci clavier Maestro (lié à-⇧-D):

http://bit.ly/thC6yf

6
raheel

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+K dans un raccourci en configurant comme ceci dans BTT:

enter image description here

(Utilisez le bouton d'attachement d'action supplémentaire pour ajouter les deuxième et troisième raccourcis.)

PS: Venant d’Eclipse où Cmd+D est la ligne de suppression ^^

5
Laurent Meyer

Utilisez des scripts utilisateur.

Il y a encore des scripts pour déplacer et supprimer des lignes. Vous devez définir des liaisons de touches pour ces scripts (menu Scripts -> Modifier les scripts utilisateur ... , sous xCode 3.2).

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

delete (paragraphs startLine through endLine)
4
Damien Flament

Triple-cliquez 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, cela fait simplement partie du système d'exploitation.

4
Paul Tomblin

Il existe une solution pour la duplication de ligne XCode4 sur ici

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

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

3
MartinMcB

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

 enter image description here

3
Aladin

Ceci est possible avec BetterTouchTool . CMD + D va dupliquer une ligne. Créez un nouveau raccourci comme celui-ci:

 enter image description here

Utilisez le bouton d'attachement d'action supplémentaire pour ajouter les deuxième et troisième raccourcis.

2
Adam Studenic

La solution de damien.flament fonctionne très bien et vous devrez peut-être régler output sur "Discard Output", voir la photo ci-dessous

Userscripts setting

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

2
palaniraja

Comme indiqué ci-dessus, fermez XCode et insérez ce qui suit dans ~/Library/Application Support/Xcode/Key Bindings/ <user>.pbxkeys dans <dict> dans la section <key>text</key>:

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

Lancez XCode et profitez CTRL-SHIFT-D et CTRL-SHIFT-K.
Si tu veux CTRL-D et CTRL-K, utilisez plutôt ^d et ^k dans les définitions de clé. Assurez-vous qu'il n'y a pas de liaisons de clés en double dans le fichier.

Fonctionne bien pour moi avec XCode 3.2

2
askh

Si vous avez déjà personnalisé vos liaisons de clé Xcode, vous devez éditer le fichier: ~/Library/Application Support/Xcode/Key Bindings/<user>.pbxkeys. Ajoutez simplement les deux tableaux (décrits ci-dessus) au dictionnaire Root/text.

1
MonsieurDart

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

Cmd +  : se déplacer en fin de ligne
Cmd + Delete : supprimer au début de la ligne
Delete : efface la ligne vide

1
huync

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

 enter image description here

1
Gagandeep Gambhir

Nous sommes sur Xcode 9.0 et les associations de touches ne fonctionnent toujours pas. Soupir.

J'ai trouvé ce Gist très utile, donc republiez-le ici pour référence future:

  1. Ouvrez /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 dernier </dict>
  3. Accédez aux préférences Xcode -> raccourcis clavier -> onglet Texte -> faites défiler l'écran jusqu'à ce que la duplication s'affiche.
  4. Cliquez sur Dupliquer la ligne actuelle, ajoutez un raccourci pour celle-ci, par exemple. Cmnd + D (résoudre les liaisons en double)
  5. Ouvrir 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>

1
Jannie Theunissen

XCodePlus delete line plugin, est un XCode qui le fait pour vous. Il est venu pré-installé avec le gestionnaire de paquets Alcatraz ...

https://github.com/payliu/XcodePlus

0
Joakim

Pour Xcode 6.1, accédez à Xcode> Préférences> KeyBindings> Text Il existe également "Supprimer jusqu'à la fin de la ligne" et attribuez une clé de votre choix.

0
SpyZip

Il n’existe toujours pas de méthode intégrée pour dupliquer les lignes, à partir de Xcode 9 .

Mise à jour: Xcode 10.0 beta 6 (10L232m) est identique.

0
erkanyildiz