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.
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
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)
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:
Redémarrez Xcode et ouvrez Xcode> Préférences> KeyBindings. Recherchez votre macro et définissez une raccourci:
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:
Dans la boîte de dialogue Modifier les scripts utilisateur:
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
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.
Allez à /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/
avec le Finder.
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.
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.
Ouvrez le fichier avec XCode (par défaut)
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:
)
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):
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:
(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 ^^
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)
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.
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>
Pas besoin de modifier Xcode. Vous pouvez simplement utiliser l'extension Xcode Linex
Ceci est possible avec BetterTouchTool . CMD + D va dupliquer une ligne. Créez un nouveau raccourci comme celui-ci:
Utilisez le bouton d'attachement d'action supplémentaire pour ajouter les deuxième et troisième raccourcis.
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
P.S: Je ne sais pas comment commenter sa réponse.
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
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
.
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
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:
/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/IDETextKeyBindingSet.plist
</dict>
<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>
XCodePlus delete line plugin, est un XCode qui le fait pour vous. Il est venu pré-installé avec le gestionnaire de paquets Alcatraz ...
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.
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.