Vim: moyen plus rapide de sélectionner des blocs de texte en mode visuel

190

J'utilise vim depuis un certain temps et je suis conscient que sélectionner des blocs de texte en mode visuel est aussi simple que SHIFT+ Vet déplacer la touche fléchée vers le haut ou vers le bas ligne par ligne jusqu'à ce que j'atteigne la fin du bloc de texte que je veulent sélectionné.

Ma question est la suivante: existe-t-il un moyen plus rapide en mode visuel de sélectionner un bloc de texte, par exemple par SHIFT+ Vsuivi de la spécification du numéro de ligne dans lequel je souhaite que la sélection s'arrête? (via :35par exemple, où 35 est le numéro de ligne que je veux sélectionner jusqu'à - cela ne fonctionne évidemment pas, donc ma question est de savoir comment si quelque chose de similaire peut être fait ...)

Calvin Cheng
la source
3
+1 Bonne question car je me suis retrouvé à faire quelque chose comme ça souvent. Je me demande si ce n'est peut-être pas l'endroit où commencer à utiliser v%ou v/patternou autre chose?
user786653
9
vip sélectionnez le paragraphe intérieur vis sélectionnez la phrase intérieure.
SergioAraujo le
27
V35Gsélectionnera visuellement de la ligne actuelle à la ligne 35, également V10jou V10ksélectionnera visuellement les 10 lignes suivantes ou précédentes
Stephan
1
@Stephan, c'est exactement ce que je cherchais. Merci!!
cri le
pour la ligne sélection raccourci I utilisation: nnoremap <Space> V. En mode ligne visuelle, faites un clic droit avec la souris pour définir la sélection (du moins sous Linux, il en est ainsi). Quoi qu'il en soit, plus efficace qu'avec le clavier uniquement.
Mikhail V

Réponses:

212

En plus de ce que d'autres ont dit, vous pouvez également élargir votre sélection à l'aide de recherches de modèles.

Par exemple, v/foosélectionnera de votre position actuelle à la prochaine instance de "foo". Si vous vouliez réellement passer à l' instance suivante de «foo», à la ligne 35, par exemple, appuyez simplement sur npour étendre la sélection à l'instance suivante, et ainsi de suite.

mettre à jour

Je ne le fais pas souvent, mais je sais que certaines personnes utilisent beaucoup les marques pour faire des sélections visuelles. Par exemple, si je suis sur la ligne 5 et que je veux sélectionner la ligne 35, je pourrais appuyer sur mapour placer une marque asur la ligne 5, puis :35pour passer à la ligne 35. Shift+ vpour passer en mode visuel par ligne, et enfin `apour sélectionner retour pour marquer a.

Geai
la source
21
Si vous devez inclure le modèle, vous pouvez utiliser v/foo/e. Le esignifie «fin» du motif correspondant.
Peter Rincker
6
Et vous pouvez modifier à partir de cette ligne avec des décalages: V / foo / + 5 ou V / foo / -5 (j'utilise le mode visuel par ligne comme l'auteur).
bheeshmar
Que feriez-vous si vous vouliez sélectionner la plage de texte correspondant à votre recherche? ie: trouver et sélectionner (mot entier) votre terme de recherche?
Daniel Park
5
@DanielPark Pour sélectionner le mot actuel, utilisez v i w. Si vous souhaitez sélectionner le non-espace contigu actuel, utilisez v i Shift+ w. La différence serait lorsque le curseur est ici MyCla|ss.Method, le premier combo sélectionnerait MyClasset le second sélectionnerait le tout.
Jay
1
Merci. Trouvé que l'utilisation v i w svous permet également d'effectuer efficacement une opération de «remplacement».
Daniel Park du
113
G                       Goto line [count], default last line, on the first
                        non-blank character linewise.  If 'startofline' not
                        set, keep the same column.
                        G is a one of jump-motions.

Le V35G réalise ce que vous voulez

bheeshmar
la source
89

Vim est une langue. Pour vraiment comprendre Vim, vous devez connaître la langue. De nombreuses commandes sont des verbes, et vim a également des objets et des prépositions.

V100G
V100gg

Cela signifie "sélectionner la ligne actuelle jusqu'à la ligne 100 incluse".

Les objets texte sont là où se trouve une grande partie de la puissance. Ils introduisent plus d'objets avec des prépositions.

Vap

Cela signifie "sélectionner autour du paragraphe actuel", c'est-à-dire sélectionner le paragraphe actuel et la ligne vide qui le suit.

V2ap

Cela signifie "sélectionner autour du paragraphe actuel et du paragraphe suivant".

}V-2ap

Cela signifie "aller à la fin du paragraphe actuel, puis le sélectionner visuellement et le paragraphe précédent".

Comprendre Vim en tant que langue vous aidera à en tirer le meilleur parti.

Après avoir sélectionné vers le bas, vous pouvez combiner avec d'autres commandes:

Vapd

Avec la commande ci-dessus, vous pouvez sélectionner autour d'un paragraphe et le supprimer. Remplacez le dpar a ypour copier ou par a cpour modifier ou par a ppour coller.

Une fois que vous aurez compris comment toutes ces commandes fonctionnent ensemble, vous n'aurez finalement plus besoin de sélectionner visuellement quoi que ce soit. Au lieu de sélectionner visuellement puis de supprimer un paragraphe, vous pouvez simplement supprimer le paragraphe avec la dapcommande.

kzh
la source
} V-2ap L'utilisation de -2 est vraiment intelligente.
Ambareesh le
40

v35G sélectionnera tout du curseur jusqu'à la ligne 35.

vvous met en mode de sélection, 35spécifie le numéro de ligne vers lequel vous voulez Galler.

Vous pouvez également utiliser v}qui sélectionnera tout jusqu'au début du paragraphe suivant.

Michaelmichael
la source
16

Pour sélectionner le nombre de lignes:

shift + v 9j - sélectionnez 10 lignes

mateusz.fiolka
la source
2
Pour les petites plages, c'est bien, surtout lorsqu'il est associé à:set rnu
Peter Rincker
9

Shift+V n j ou Shift+V n k

Ceci sélectionne la ligne actuelle et les nlignes suivantes / précédentes . Je trouve cela très utile.

Peng Zhang
la source
C'est une manière simple que je recherchais. Merci
Arsal
6

v 35 j

texte ajouté pour 30 caractères minimum

µBio
la source
6

v%

sélectionnera tout le bloc.

Jouez aussi avec:

v}, vp, vs, Etc.

Voir l'aide:

:help text-objects

qui répertorie les différentes façons de sélectionner des lettres, des mots, des phrases, des paragraphes, des blocs, etc.

bjfletcher
la source
4

Vous pouvez appuyer sur vi}pour sélectionner le bloc entouré de {}crochets où se trouve actuellement votre curseur.

Peu importe où vous vous trouvez à l'intérieur de ce bloc (assurez-vous simplement que vous êtes dans le bloc le plus à l'extérieur). Vous pouvez également changer {pour tout ce qui a une paire comme )ou ].

iggy
la source
3

Vous pouvez toujours simplement utiliser des nombres antécédents pour répéter des actions:

  • En mode visuel, tapez 35et le curseur se déplacera vers le bas 35 fois, en sélectionnant les 35 lignes suivantes
  • En mode normal:
    • supprimer 35 lignes 35dd
    • coller 35 fois 35p
    • annuler 35 modifications 35u
    • etc.
Jackson
la source
3

simple il suffit d'appuyer Shift v line number gg

exemple: votre ligne actuelle à la ligne 41 Appuyez simplement sur Shift v 41 gg

ReyApr
la source
1

} signifie déplacer le curseur vers le paragraphe suivant. donc, utilisez v}pour sélectionner le paragraphe entier.

mabeiyi
la source
0

Pour tout sélectionner en visuel: tapez Echap pour être sûr que vous êtes en mode normal

:0 

tapez ENTER pour aller au début du fichier

vG
Sergio Abreu
la source
Vous pouvez également utiliser ggen mode normal pour accéder à la première ligne.
huangzonghao
0

Il pourrait être utile de savoir:

Afin de sélectionner le même nombre de lignes par exemple, utilisez 1v Vous devez avoir fait quelques modifications pour pouvoir utiliser 1v, par blocs ou par lignes.

Aujourd'hui, j'ai vu cette astuce incroyable d' ici :

 :5mark < | 10mark > | normal gvV
 :5mark < | 10mark > | normal gv

Vous pouvez également réinitialiser les limites du bloc visuel en procédant ainsi:

m< .......... sets the visual mode start point
m> .......... sets the visual mode end point
SergioAraujo
la source
0

J'utilise ceci avec un pli en mode indent:

v ouvrir le mode visuel n'importe où sur le bloc

zaza toogle deux fois

yoann guillard
la source