supposons que j'ai les textes suivants:
aaa-dd-e: "aaa",
bb-x: "bb",
c-9: "c"
Je veux faire une sélection comme ci-dessous:
aaa-dd-e:
"aaa",
bb-x:
"bb",
c-9:
"c"
J'ai essayé d'utiliser cv pour créer un bloc visuel, mais après avoir créé la sélection sur la première colonne et j'ai appuyé sur "f:" (je voulais étendre la sélection au signe deux-points sur chaque ligne comme ci-dessus), ce que j'obtiens est:
aaa-
dd-e: "aaa",:
bb-x
"bb",
c-9:
"c"
la sélection s'arrête au premier deux-points et crée un rectangle.
visual-mode
Aaron Shen
la source
la source
Réponses:
La sélection est généralement un moyen d'arriver à une fin, plus encore à Vim où la sélection n'est souvent pas nécessaire en premier lieu.
En supposant que vous souhaitiez toujours mettre des guillemets autour des noms de propriété dans votre fichier non JSON pour le transformer en JSON approprié:
:'<,'>norm I"^[f:i"
('<,'>
est automatiquement inséré pour vous et^[
est obtenu avec<C-v><Esc>
).Si vous avez le magnifique plugin surround, l'étape 2 devient:
Avec une substitution, l'étape 2 pourrait devenir:
la source
:g/regex/norm
, je peux simplement réaliser tout ce que je veux faire."+y
ou"*y
, selon le presse-papiers que vous souhaitez cibler. Il existe de nombreuses questions connexes ici.Vim prend uniquement en charge les sélections rectangulaires par blocs, à l'exception de la bordure droite dentelée lorsque vous appuyez sur
$
.Il existe des plugins (comme les curseurs multiples de vim ) qui peuvent émuler plusieurs sélections, mais vous devriez également être en mesure d'atteindre votre objectif réel (que vous n'avez malheureusement pas mentionné) avec des commandes Vim pures, par exemple
:global
et:substitute
(si vous pouvez formuler un régulier expression qui correspond à la sélection dans chaque ligne), ou en répétant des macros (s'il y a un mouvement particulier qui couvre la sélection dans chaque ligne).la source
Juste pour jeter un autre chapeau dans le ring, si vous voulez vraiment utiliser la sélection visuelle, vous pouvez utiliser le plugin Tabular pour aligner les deux-points, puis faites votre sélection visuelle.
Si vous prenez votre texte d'origine:
:Tab /:\zs
alignera tout après les deux points, comme ci-dessousEt puis vous pouvez faire votre sélection visuelle de bloc.
Comme d'autres l'ont dit, cependant, la sélection visuelle n'est probablement pas nécessaire dans cette situation. L'utilisation
norm
ou la substitution peut probablement accomplir ce que vous voulez sans vous soucier des sélections visuelles.la source
J'ai trouvé une solution à ce problème qui est étonnamment simple! Démarrez le mode de blocage visuel à partir du bas de la sélection du texte que vous souhaitez copier et sélectionnez vers le haut! Il étendra le bloc au fur et à mesure que vous montez, tandis que si vous le mettez en surbrillance vers le bas, il semble rendre la sélection plus petite.
la source