web-dev-qa-db-fra.com

Comment créer un raccourci clavier de ligne de suppression dans Xcode 8? Les solutions Xcode 3 ne fonctionnent plus

Dans les versions précédentes de Xcode, il était possible de créer une liaison de clé pour supprimer la ligne actuelle. Il y avait différentes solutions et elles sont décrites par exemple ici:

Xcode: touche de suppression de ligne

ligne Xcode dupliquée/supprimée

http://bigdiver.wordpress.com/2009/09/11/configure-homeend-key-bidings-on-mac-os-x/

http://www.betadesigns.co.uk/Blog/2010/02/03/custom-xcode-shortcuts/

Toutes les solutions incluent la modification d'un de ces fichiers:

~/Bibliothèque/Support d'application/Xcode/Liaisons de touches/*. Pbxkeys
~/Bibliothèque/KeyBindings/DefaultKeyBinding.dict
~/Bibliothèque/KeyBindings/PBKeyBinding.dict

Une bonne ressource pour les raccourcis existants dans Xcode 4 est http://cocoasamurai.blogspot.com/2011/03/xcode-4-keyboard-shortcuts-now.html . Il existe de nombreuses listes concernant la suppression, mais aucune pour "supprimer la ligne".

MAIS, ces solutions ne fonctionnent pas [~ # ~] [~ # ~] puisque Xcode 4.

Mise à jour : le problème est toujours le même que pour Xcode 5.1.1

Mise à jour : le problème est toujours le même que pour Xcode 6.1 GM Seed 2

Mise à jour : s'applique toujours à Xcode version 7.3 (7D175) au 26 avril 2016

Mise à jour : Six ans plus tard, Xcode 8.3 a une solution intégrée. Voir la réponse ci-dessous.

77
Klaas

On dirait que Xcode 8.3 a finalement ajouté la commande Supprimer la ligne :)

Par défaut, aucun raccourci clavier ne lui est attribué, vous devrez donc en ajouter un vous-même dans:

  1. Ouvrir Xcode> Préférences> Raccourcis clavier
  2. Rechercher Delete Line
  3. Ajoutez un raccourci clavier dans la colonne Key

Xcode Key Bindings

58
Paulo Mattos

Après de nombreuses recherches ici et là, je suis arrivé à la solution suivante:

Appuyez et maintenez control puis appuyez sur AKK.

(Remarque: deuxième K supprime la ligne vide).

En fait, il s'agit d'une combinaison de deux commandes: Move to Beginning of Paragraph & Delete to End of Paragraph. Vous pouvez également utiliser/définir d'autres clés et également utiliser/définir/modifier les raccourcis clavier pour d'autres commandes, par exemple Move to Beginning of Line & Delete to End of Line. J'ai utilisé les raccourcis clavier (par défaut) ci-dessus comme ils me convenaient.

Modifier:

Pour supprimer plusieurs lignes consécutives , appuyez d'abord sur control puis appuyez surA (juste pour aller au début du paragraphe/de la ligne), puis maintenez enfoncée K jusqu'à ce que toutes les lignes soient supprimées (cela fonctionnerait comme le curseur reste au début).

Juste pour rendre la tâche facile (pour moi), j'ai mis commandD pour Delete to End of Paragraph et home/end pour aller au début/à la fin du paragraphe.

92
Vasu

Je l'ai! Cela fonctionne dans XCode 4.3 à 4.5 et ne nécessite aucune application supplémentaire et est spécifique à XCode.

Cette solution est fondamentalement la même que la commande Duplicate Line décrite ici :

Modifier le fichier plist

C'est à /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet.plist

Notez que:

  • la réponse liée suggère d'utiliser XCode pour cela, mais je trouve que cela plante XCode
  • ce chemin est pour Lion - il peut varier pour d'autres versions du système d'exploitation
  • vous devrez peut-être Sudo ou modifier les autorisations pour modifier ce fichier
  • fermez XCode avant de le modifier

Ajoutez un nouveau <dict> élément

Ajoutez ce texte juste au-dessus de la fin du <dict> au bas de ce fichier

    <key>Custom</key>
    <dict>
      <key>Delete Current Line In One Hit</key>
      <string>moveToEndOfLine:, deleteToBeginningOfLine:, deleteToEndOfParagraph:</string> 
    </dict>

Notez que:

  • C'est à l'intérieur du <dict> donc il y a un </dict></plist> après ça
  • Ceci associe l'action nommée "Supprimer la ligne actuelle d'un coup" aux trois actions clés de la chaîne. J'ai joué avec différentes options ici pour obtenir la bonne combinaison. Par exemple, si vous essayez moveToBeginningOfLine, deleteToEndOfLine au lieu de l'inverse, alors l'utiliser sur des lignes vides supprimera la ligne et toute la ligne suivante. Ce qui est désagréable

Enregistrez cela et ouvrez XCode

Ajouter une nouvelle liaison de clé dans XCode

Voir les captures d'écran pour cela dans le réponse liée ou faites ceci:

  1. Ouvrez les préférences XCode
  2. Sélectionnez les raccourcis clavier
  3. Cliquez sur Tout
  4. Dans la zone SEarch, tapez "Supprimer" et recherchez "Supprimer la ligne actuelle en une fois"
  5. Ajoutez votre nouvelle reliure.

Cela devrait le faire, mais pour une mise en garde. Je n'ai jamais pu obtenir XCode pour enregistrer la nouvelle liaison. Le même problème est décrit ici bien que ma solution de contournement ait eu une légère variation:

  1. Créez un doublon des liaisons par défaut (appuyez sur le bouton + en bas à gauche de la fenêtre Liaisons et créez un doublon)
  2. Définissez la nouvelle liaison dans le doublon
  3. Fermez la boîte de dialogue des préférences (c'est la variation!)
  4. Ouvrez à nouveau les préférences et faites un nouveau double de l'ancien double et supprimez l'ancien double.

Qu'est-ce qu'un rigmarole, hein? Mais ça marche. Maintenant, j'ai Ctrl + D mappé pour supprimer toute la ligne actuelle dans XCode 4.3 sur Lion.

59
Rhubarb

J'ai trouvé une solution de contournement temporaire pour Xcode 9 .

Ouvrez le Xcode/Content/Frameworks/IDEKit.framework/Resources/IDETextK‌ eyBindingSet.plist et ajoutez les lignes ci-dessous.

Il imite l'action qui se produit dans Xcode 8 avec un support limité. Il ne peut supprimer qu'une seule ligne mais je suis satisfait en quelque sorte. J'espère que cela sera bientôt corrigé.

<key>Customized</key>
<dict>
    <key>Delete Line</key>
    <string>moveToBeginningOfLine:, deleteToEndOfLine:, moveDown:, deleteBackward:</string>
</dict>

Après le redémarrage de Xcode, vous pouvez voir l'élément personnalisé dans Key Bindings comme ci-dessous.

enter image description here

Liez et utilisez-le!

Edit) Je pense que ci-dessous est meilleur que l'original.

<string>moveToEndOfLine:, deleteToBeginningOfLine:, deleteToEndOfParagraph:</string>
16
Wooseong Kim

J'utilise BetterTouchTool , c'est plutôt cool:

enter image description here

13
borisdiakur

Rhubarbe la réponse est correcte et fonctionne mais une chose, il y a une commande plus simple dans le fichier plist. Suivez toutes les instructions de Rhubarbe mais

au lieu de

<string>moveToEndOfLine:, deleteToBeginningOfLine:, deleteToEndOfParagraph:</string>

utiliser ci-dessous

<string>selectLine:, delete:</string>

Ceci est plus clair et élimine toute possibilité de dysfonctionnement.

Je veux écrire ceci comme un commentaire, mais ma "réputation" ne me permet pas de le faire.

9
RabbitHole

essaye ça:

  1. Ouvrez d'abord Xcode-> Préférences

  2. Sélectionnez Bindigs clés

  3. recherche Supprimer le paragraphe

  4. Modifier Supprimer le paragraphe de votre raccourci

enter image description here

7
Bary Levy

Si vous êtes un utilisateur de Keyboard Maestro, créez simplement une macro qui effectue les opérations suivantes:

  • Commande Flèche gauche
  • Déplacer la flèche vers le bas
  • Supprimer

Je l'ai affecté à Command-D et l'ai rendu disponible uniquement dans Xcode.

2
Paul Waldo

Une solution simple pour XCode 5 et 6:

Installez alcatraz: http://alcatraz.io/ puis utilisez-le pour installer le plugin " XCodePlus delete line ":

Window > Package manager

Il y a aussi beaucoup d'autres plugins géniaux .

1
Simon Epskamp

Il semble que XCode utilise désormais un fichier plist par rapport à un fichier dict, et le nouveau format ne prend pas en charge l'ajout de plusieurs commandes à une liaison de clé. Il ne semble pas non plus y avoir de moyen d'ajouter des commandes personnalisées à lier à l'un ou à l'autre. Le seul moyen que j'ai trouvé pour faire fonctionner quelque chose est de définir une liaison de clé pour les actions distinctes, telles que ^D pour deleteToEndOfLine:, puis ^L pour moveToBeginningOfLine:, te donner ^L+^D pour vous donner l'effet combiné.

1
onteria_

semble que cela ne peut pas être fait maintenant ... n'hésitez pas à me corriger si je me trompe ... mais voici ma nouvelle solution ...

allez dans les préférences de xcode, puis sur l'onglet des raccourcis clavier. dupliquez l'ensemble par défaut, afin que vous ne soyez pas en colère contre moi lorsque la suggestion que je fais casse quelque chose que vous utiliserez.

trouver 2 clés adjacentes et non utilisées pour les commandes que vous utilisez ... ";", "'" peut-être. (Je n'utilise pas la commande n pour le nouveau fichier, j'ai donc choisi n, m)

définissez la première clé sur "Déplacer au début de la ligne" et la deuxième clé sur "Supprimer jusqu'à la fin de la ligne"

puis utilisez cette séquence pour supprimer une ligne ...

alternative serait définie quelque chose pour sélectionner la ligne, puis utilisez simplement supprimer.

1
Grady Player

Si cela ne vous dérange pas d'avoir cette liaison de touches dans d'autres applications, vous pouvez essayer de la définir dans les liaisons de touches Cocoa générales. This a une explication.

1
LaC