Question Comment déplacez-vous le (s) curseur (s) vers la prochaine occurrence d'un caractère dans Sublime Text?


Disons que nous avons un fichier contenant ceci:

name, job, age
Mark, Specialist, 24
Bob Guy, Manager, 43
Susan Third, Data Generation, 30

Ce que je veux faire, c'est naviguer dans les champs. Aller au champ suivant, sélectionner un champ, etc. Cela se fait facilement dans VIM en recherchant des virgules (et en supposant qu'il n'y a pas de virgules échappées); est-ce aussi possible dans Sublime Text? Et d'une manière qui fonctionne avec plusieurs curseurs, disons un au début de chaque ligne?

Points bonus si vous pouvez l'étendre à la prochaine sous-chaîne ou correspondance regex.


4
2017-11-11 09:43


origine


Avez-vous déjà résolu cela? - Joost
@Joost Non. En guise de solution de contournement, je vais parfois isoler le texte sur lequel je travaille (copier-coller dans un nouveau fichier), placer des curseurs avec une regex, insérer des marqueurs uniques comme "XXX", faire ma modification, puis supprimer le marqueurs et copier-coller dans le fichier d'origine. - Tristan Berger


Réponses:


Dans votre cas d'utilisation particulier, une bonne recherche à effectuer pour isoler chaque valeur serait \w[^,\n]+ - assurez-vous de cliquer sur le bouton regex ou sur Alt+R (Les fenêtres) / Cmd+Option+R (Mac) dans le champ de recherche.

Pour naviguer au prochain match, utilisez F3 (Les fenêtres) / Cmd+g (Mac). Décalage+F3 / Cmd+Décalage+g naviguera jusqu'au match précédent. Vous pouvez continuer à le faire après avoir frappé Esc pour supprimer le champ de recherche, cela vous permettra de modifier immédiatement le match sélectionné.

Malheureusement, il ne semble pas que find-next puisse coexister avec plusieurs sélections - cela met en évidence le premier match de la dernière sélection. Vous pouvez mettre en évidence plusieurs lignes, puis diviser la sélection en lignes, puis utiliser Ctrl (Les fenêtres) / Cmd (Mac) +  ou  flèches dans une certaine mesure, mais cela va évidemment s'effondrer lorsque certaines valeurs ont des espaces.


5
2017-11-19 05:11



Merci, c'est un bon coup au problème, mais j'espère toujours trouver un moyen de mieux travailler avec plusieurs curseurs. Je voterai ceci une fois que j'aurai la réputation de le faire. - Tristan Berger


Une façon de faire est d'utiliser le mode vintage.

Modifiez vos préférences (par ex. Settings - User) de ne pas ignorer le package vintage (qui se trouve dans les préférences par défaut).

{
    "ignored_packages": []
}

Lorsque vous avez plusieurs curseurs, utilisez la commande vim f suivi d'un caractère pour déplacer tous les curseurs vers la prochaine recherche de ce personnage. (voir https://stackoverflow.com/questions/12495442/what-do-the-f-and-t-commands-do-in-vim)

Malheureusement, ceux-ci ne se déplacent que vers les caractères de la même ligne et les curseurs sur les lignes sans ce caractère sont laissés là où ils se trouvaient auparavant. La commande de recherche / oublie vos multiples curseurs.


4
2017-08-06 11:07





  • CTRL+UNE => sélectionner tous les fichiers
  • CTRL+DÉCALAGE+L => scinder la sélection en lignes
  • Accueil => déplacer toutes les sélections au début de la ligne
  • ESC => entrer le mode de commande
  • F, , => trouver et déplacer les curseurs sur chaque ligne jusqu'au premier point-virgule (répétez jusqu'à ce que vous soyez sur celui que vous recherchez)
  • je => entrer le mode d'insertion

Travail terminé :)


0
2017-11-23 14:14



Quel est ce mode de commande dont vous parlez? - Joost
Dans Sublime Text, si vous appuyez sur la touche ÉCHAP, vous entrez dans un "mode de commande". Ensuite, vous pouvez appuyer sur une touche comme "f" pour lancer une recherche. "vi" fonctionne de manière similaire. - Ronan Lamour