Ajuster l'autre extrémité d'une sélection visuelle

14

Je pense que cela permettrait à la fonction de sélection visuelle de vim de surpasser l'efficacité même de la souris en offrant la possibilité de "changer" le terminus actuel de la sélection:

Illustré (le |doit représenter le curseur (Vim le fait fonctionner à gauche du caractère sur lequel il se trouve) et [text]représente le texte sélectionné, il suffit de faire comme s'il occupait une largeur nulle. Le fond de l'espace entre [ ]semble gris et le caractère immédiatement suivant le |vert):

Commencer avec

Some |text here
Some second line of text
Some more text in the third line 

Appuyez sur v2j; notez que le mcaractère est inclus dans la sélection (il est maintenant mis en évidence par le curseur):

Some [text here
Some second line of text
Some |m]ore text in the third line 

Presse 10l:

Some [text here
Some second line of text
Some more text |i]n the third line 

C'est à ce stade que je pourrais décider que je voulais commencer à sélectionner à partir d'un emplacement différent. par exemple, y compris le "Some"sur la première ligne.

Je n'ai pas le choix dans un éditeur / IDE typique. Je devrais probablement déplacer ma main vers la souris, il est généralement trop pénible de sélectionner du texte en utilisant des méthodes traditionnelles, l'utilisation du saut de mot via Ctrlet de la page haut / bas aide quelque peu, mais quoi qu'il en soit, je dois m'engager à l'un de mes points de fin de la sélection avant de commencer la sélection .

Donc, à Vim, j'adorerais avoir la possibilité de prendre mon état actuel et de l'amener à cela en frappant une liaison mystère:

Some [|text here
Some second line of text
Some more text i]n the third line 

Ensuite, je peux simplement appuyer sur ^ou <Home>(les deux font la même chose dans ce cas où il n'y a pas d'espace blanc) pour le transformer en

[|Some text here
Some second line of text
Some more text i]n the third line 

Dis que je change d'avis à nouveau , je veux ajuster l'autre extrémité!

[Some text here
Some second line of text
Some more text |i]n the third line 

Hit e:

[Some text here
Some second line of text
Some more text i|n] the third line 

Belle! Je peux maintenant faire ce que je veux avec cette sélection.

Alors, quel est ce mystère qui lie?

De plus, un ensemble de liaisons alternatives pour certaines des commandes de mouvement les plus utilisées vers une autre ligne de touches, encore plus efficace, déplacerait toujours l'autre extrémité de la sélection. Donc, dans cette opération de sélection du mode visuel, si les touches de mouvement de l'autre extrémité de la sélection étaient définies sur "yuio" (probablement pas un bon choix car nous avons en quelque sorte besoin ymais supportons avec moi) nous aurions pu taper

v2j10l5ye

plutôt que

v2j10lX^Xe

Hé, vous savez quoi, ce n'est même pas vraiment une amélioration. Donne-moi juste cette fonctionnalité X. :)

Les réponses parfaites que je recherche:

  • Hé, regarde :help some_awesome_vim_feature_that_just_does_this
  • Hé, regarde https://github.com/awesome_user/vim_plugin_that_does_this
  • Hé, regarde :help vimscript_functions_that_allow_mutation_of_visual_selections

Je suis assez nouveau dans cette fascination pour Vim, donc je suis très vert en ce qui concerne Vimscript, et honnêtement, je voudrais éviter d'essayer d'apprendre une autre langue, donc j'espère que je ne serai pas obligé de construire cela comme un plugin.

Steven Lu
la source
D'accord. Maintenant, je ne sais pas ce qui se passe ici (la question a mystérieusement changé de SO à SU), mais j'ai initialement posté cela sur SO et je préférerais vraiment qu'il y reste. Avec tout le respect dû aux non-programmeurs, seuls les programmeurs peuvent se soucier autant de l'édition de texte. Bien sûr, tous les utilisateurs de vim pourraient bénéficier d'apprendre comment cela pourrait fonctionner, je pense simplement que cela obtiendrait plus de globes oculaires et une meilleure chance d'obtenir une réponse là où se trouvent les développeurs de plugins.
Steven Lu
Lisez-vous parfois le :help? :help visual-modecontient toutes les informations dont vous pourriez avoir besoin sur le mode visuel, y compris o.
romainl
Je le lis parfois, mais cela aurait probablement dû prendre à peu près le même temps pour écrire mes pensées. C'est une tâche plus définie que de deviner ce qu'est la chaîne d'aide.
Steven Lu
Apprendre vaut mieux que deviner. La réponse d'Heptite vous a appris deux choses, pouvez-vous les nommer?
romainl
Oui, je veux dire qu'il y a beaucoup de choses à apprendre, mais j'ai déjà oublié ce que fait OO majuscule, mais je m'en souviendrai o. La deuxième chose à laquelle vous faites référence est probablement d'utiliser :helpplus. Et je l'utilise plus que lorsque j'ai commencé.
Steven Lu

Réponses:

49

Je ne suis pas sûr de bien comprendre ce que vous voulez, mais c'est peut-être ceci:

:help v_o

Fondamentalement, alors que le texte est visuellement en surbrillance, vous pouvez appuyer sur oet il passera à l'autre "extrémité" de la région visuelle sans le modifier.

Heptite
la source
2
Putain de merde, oui !!! C'est encore mieux que ce que j'avais espéré, il est déjà lié à une seule clé , donc Xci-dessus est en faito
Steven Lu
1
Permettez-moi également de souligner que le clic droit de la souris (si votre terminal est configuré pour le transmettre à Vim) lui permettra d' ajuster intelligemment l'extrémité la plus proche de la sélection visuelle actuelle à l'endroit où se trouve le curseur. Cela en fait une méthode beaucoup moins douloureuse pour ajuster la zone de sélection car elle ne jette pas l'emplacement de l'extrémité opposée de la sélection.
Steven Lu
@StevenLu: Il n'est pas jeté de toute façon. Vous pouvez appuyer à onouveau et revenir en arrière.
Heptite
@StevenLu Cela devrait probablement être la réponse acceptée, étant donné qu'il a non seulement résolu votre problème, a une tonne de votes positifs, est également arrivé exactement ce dont j'avais besoin sur le premier résultat Google, et est en fait la seule réponse soumise par quiconque ...
Kingdon
Oui, je pense que je ne l'ai jamais acceptée car elle a été publiée si rapidement que je n'étais pas encore autorisé à le faire à l'époque, et j'utilise cette fonctionnalité Vim depuis près de cinq ans depuis, sans jamais avoir à me rappeler ce que le la clé est, car il est super facile à retenir.
Steven Lu