Xcode prépare un mode avec plusieurs curseurs en même temps

Nicolas Furno |

Xcode, l’outil de développement d’Apple, va peut-être bientôt gagner une nouvelle fonction assez commune dans le monde des éditeurs de code : la possibilité d’insérer plusieurs curseurs en même temps. Cela permet de modifier rapidement un élément présent sur plusieurs lignes, avec davantage de souplesse qu’un chercher/remplacer, ou bien pour aller plus vite s’il ne s’agit que de deux ou trois occurrences.

Cette fonction n’est pas encore disponible par défaut, mais une option masquée, à activer via le terminal, permet d’en disposer avec Xcode 9.3. Si vous voulez l’essayer, saisissez cette commande dans une fenêtre de terminal :

defaults write com.apple.dt.Xcode PegasusMultipleCursorsEnabled -bool true

Ensuite, vous pouvez insérer plusieurs curseurs en cliquant tout en maintenant la touche pressée. À l’usage, on comprend vite pourquoi c’est une option qui n’est pas proposée par défaut, ni même dans la fenêtre de réglages de Xcode : cela ne fonctionne pas très bien. Normalement, un clic avec sert à afficher un menu contextuel qui permet ensuite de réaliser quelques actions, que ce soit pour afficher de l’aide, ou afficher la fonction de référence d’une commande. Cette interface vient gêner l’insertion des curseurs suivants, il faut souvent s’y reprendre à deux fois et viser les espaces.

Pour ne rien arranger, même quand on a réussi à insérer plusieurs curseurs, on peut effectivement saisir du texte sur chaque ligne, mais pas en supprimer. La touche de retour en arrière retire tous les curseurs additionnels et n’agit que sur le premier, ce qui est pénible et même dangereux si vous n’êtes pas attentif. Bref, la fonction existe, mais elle n’est pas prête. Ce sera peut-être pour Xcode 10 ?

avatar stefhan | 

(Psst @MacG ! Sur iOS, on ne peut pas lire la vidéo : le bouton OK de Twitter n’est pas accessible...)

avatar radeon | 

@stefhan

De mon côté ça fonctionne

avatar ssssteffff | 

@radeon

Ici aussi (6S 10.3)

avatar stefhan | 

@radeon

Non non : https://app.box.com/s/4b6x1219gzpmvex4lnj6g9cqshf7ii6r

ps : j’ai un iPhone, pas une phablette...

avatar Nicolas Furno | 

@stefhan

Merci pour l'info, ils ont pénibles aussi avec cette alerte systématique…

Bref, en attendant qu'on améliore ça dans l'app, j'ai publié la vidéo sur nos serveurs.

avatar radeon | 

@stefhan
Ha ok ben sur un 7 sous 11.3 ça passe, même si c'est tjrs pénible de devoir faire plusieurs clics pour lancer la vidéo, donc ça dépend des tailles d'écrans on dirait.

PS j'ai un iPhone pas un mini truc où mon pouce fait la moitié de la largeur de l'écran ?

avatar radeon | 

En tout cas ça serait bien pratique ?

avatar ssssteffff | 

@radeon

Très pratique, je l’utilise au quotidien sur IntelliJ.

Par contre sur XCode il n’y a pas moyen de personnaliser les raccourcis ? C’est forcément Option ou rien ?

avatar C1rc3@0rc | 

Dire que cette fonction existe dans l'ecrasante majorité des editeurs de code est un euphemisme: on le trouve deja dans Vim...

Bref Apple avec le temps commence a rattraper son (gros) retard.

Cette fonction est tres utile et pas que pour les editeurs de code. Souvent on peut faire autrement en utilisant des regex, mais ce n'est pas toujours le cas.
Je suis curieux de voir comment Apple va finir par résoudre son probleme ici.

avatar Vostorn | 

J'ai toujours tendance à penser qu'un code où il y a plusieurs lignes identiques est un code mal externalisé.
Mais c'est vrai que ça m'arrive souvent et que je ne vois pas comment je pourrais faire ?

avatar Emile Schwarz | 

Xojo, l’IDE que j’utilise, a trois boutons pour sélectionner les “zones d’effet” de la Recherche ou du Remplacemet:

la méthode actuelle, (celle à l’écran)
l'objet actuel, (fenêtre, module, classe, etc.)
le projet actuel. (le projet propriétaire de la fenêtre actuellement à l’écran).

Alors, plusieurs curseurs, ça me fait rire très fort (on verra si ça marche un jour).

avatar codeX | 

Moi, ce qui me fait rire, c'est la flopée de bugs que contient ce RAD. Quelques louches sont rajoutées à chaque nouvelle version.

avatar YoanGJ | 

@Emile Schwarz

3 curseurs ça permet d’être beaucoup plus souple, regarde la vidéo de l’article, tu peux greffer une extension commune à 3 noms de variable différents

Et ça marche déjà très bien dans la majorité des éditeurs de code donc je ne vois pas ce qui te fait rire si fort

avatar iPop | 

L’homo-superior aura trois yeux ?

avatar BeePotato | 

« Normalement, un clic avec ⌘ sert à afficher un menu contextuel qui permet ensuite de réaliser quelques actions, que ce soit pour afficher de l’aide, ou afficher la fonction de référence d’une commande. »

Bah, de toute façon toutes les touches modificatrices (command, option, control, shift) sont déjà utilisées pour réaliser une action dans Xcode. Ils n’ont qu’à associer cette fonction à la combinaison option+command, et ce problème sera réglé.

avatar Emile Schwarz | 

> ça marche déjà très bien dans la majorité des éditeurs de code
Ah ! Les éditeurs de code “cryptés” (non accessibles au commun des mortels).

De toute façon, je ris d’un rien ;)

Le temps dira si c’est idiot (si on doit en rire) ou pas (si on peut rire de moi ;-:)

>un clic avec ⌘ sert à afficher un menu contextuel
Ctrl-Clic pour Menu Contextuel.

avatar BeePotato | 

@ Emile Schwarz : « Ctrl-Clic pour Menu Contextuel. »

Oui, c'est le raccourci standard dans Mac OS et il est évidemment utilisé aussi dans Xcode, pour obtenir le même menu contextuel qu'on obtiendrait via un clic secondaire (ou toute autre méthode qu'on préfère).
Mais dans Xcode, il y a en plus cmd+clic qui sert à faire apparaître (comme indiqué dans l'article) un autre menu, plus spécifique (et à l'aspect différent, non standard), servant à passer rapidement à la déclaration ou la documentation du symbole sur lequel on a cliqué.

avatar Emile Schwarz | 

OK. Merci.

Note: je n’ai jamais pu aller plus loin que le lancement d’XCode !

Que fait-on après ?

Dans l’IDE que j’utilise, c’est simple: une palette de controls: deux clicks ajote le control dans la fenêtre, un menu permet d’ajouter des éléments, etc. C’est clair et simple (comme l’était HyperCard).
Le pire, c’est que c’est pareil dans tous les autres IDE que j’ai essayé :(

avatar BeePotato | 

@ Emile Schwarz : « Que fait-on après ? »

On lit la documentation ! :-)

Blague à part : Xcode, comme IDE, c'est simple aussi. Interface Builder (auparavant logiciel à part, puis intégré à Xcode depuis quelques années maintenant) présente lui aussi (et depuis presque aussi longtemps qu'HyperCard) une palette d'éléments d'interface à placer dans ta fenêtre, avant d'en éditer éventuellement certains attributs, puis de les relier au code.
La différence, c'est qu'on n'a pas la facilité qu'on avait dans HyperCard, de pouvoir accéder directement depuis un élément d'interface au code qui le gère. Ça peut se comprendre, mais parfois je regrette un peu que cette approche n'ait pas été reprise et adaptée pour Xcode.

Bref, la partir édition d'interface est tout aussi facile dans Xcode que dans tout autre IDE.
En revanche, on ne coupe pas à de la lecture de documentation pour écrire le code qui gère tout ça (encore que dans certains cas on puisse presque complètement se passer d'écrire du code).

avatar fte | 

J’aimerais que Apple de concentre à faire fonctionner Xcode correctement avec un seul curseur, avant de multiplier la complexité avec plusieurs curseurs. Et de laisser aux IDE de qualité ces choses plus évoluées.

La comparaison avec Jetbrains et Visual Studio est salement cruelle.

Et pourtant je n’ai pas des exigences déraisonnables. Déjà juste une demi-journée sans que le machin ne se paralyse ou n’explose ça serait cool. J’ai CLion ouvert (et jamais relancé) depuis Pâques : je n’en demande pas tant, mais ce n’est pas inhabituel avec cet IDE.

CONNEXION UTILISATEUR