Comment modifier le bloc sélectionné visuellement avec une commande externe?

9

J'ai un fichier composé de deux parties verticales. Sur le côté gauche, les données sont déjà formatées et je ne veux pas les changer. Je veux seulement formater les données sur le côté droit. Disons que j'ai un fichier avec des lignes comme

foo=bar baz     # Neato       Junk
quux=xyzzy      # Bilbo Baggins Ring

avec beaucoup plus de lignes comme ça. Je veux seulement modifier le texte à droite du caractère '#'. J'ai sélectionné le texte que je veux avec les expressions suivantes:

gg
/#
ctrl-v
G
$

mais si j'essaye ensuite de le modifier (disons avec :'<,'>!column -t), il modifie en fait l'intégralité de chaque ligne. Quelle est l'expression correcte à utiliser pour modifier uniquement les pièces sélectionnées visuellement?

kojiro
la source
2
Vous pouvez essayer le plugin vis de Dr. Chip ou mon plugin NrrwRgn . Les deux devraient le gérer très bien.
Christian Brabandt

Réponses:

6

Vous pouvez également essayer:

gg
^V
G
t#
d
:%!column -t
gg
P

De :h :visual_example:

Actuellement, la commande ":" fonctionne uniquement sur des lignes entières. Lorsque vous sélectionnez une partie d'une ligne, faire quelque chose comme ":! Date" remplacera la ligne entière. Si vous souhaitez qu'une partie seulement de la ligne soit remplacée, vous devrez faire un mappage pour celle-ci. Dans une future version, ":" pourrait fonctionner sur des lignes partielles.

Voir aussi :h visual-operatorspour plus de détails.

Jair López
la source