2008-10-30 9 views
3

J'aime le mode visuel de Vim. v pour mettre en évidence/sélectionner des caractères ou des lignes, Ctrlv pour la mise en évidence de rectangle, autant que je sache (je suis un débutant). Est-il possible d'utiliser le mode visuel pour mettre en évidence les deux derniers caractères, par exemple, sur chaque ligne pour certaines lignes sélectionnées? Les lignes sélectionnées sont de longueur différente. Fondamentalement, je voudrais trouver un moyen rapide de supprimer les deux derniers caractères pour certaines lignes sélectionnées. Je ne suis pas certain de pouvoir utiliser le mode visuel pour mettre en évidence une zone irrégulière.Mode visuel VIM: mettre en évidence les 2 derniers caractères de chaque ligne?

Répondre

3

Je ne peux pas penser à une façon de le faire en mode visuel, mais vous pouvez utiliser une commande comme celui-ci pour le faire ...

:10,20 normal $xx 

Cela irait à chaque ligne entre la ligne numéro 10 et 20, utilisez $ pour aller à la fin de la ligne, puis utilisez deux fois x pour supprimer deux caractères. Normal indique simplement à vim d'utiliser les symboles suivants comme s'ils étaient des raccourcis clavier entrés en mode normal (c'est-à-dire après avoir frappé esc).

Cela aide-t-il?

+0

J'aime votre chemin. C'est ce que je veux faire. –

9

Mon approche de ce genre de problème est d'utiliser la sélection de ligne (shift-V, le déplacement du curseur) pour sélectionner les lignes-de-intérêt, puis tapez:

:s/..$// 

C'est une substitution, en utilisant l'expression rationnelle ..$ qui correspondra aux deux derniers caractères à la fin de la ligne. Ensuite, remplacez «rien», c'est-à-dire supprimer.

En vim, une fois que vous appuyez sur la : avec une sélection de ligne active, l'invite de commande affichera en fait:

:'<,'> 

Quel est le début et la fin des adresses de sélection pour la commande suivante (s dans ce cas

+0

Sympa, je ne savais pas que vim te laisserait opérer sur une telle sélection. –

Questions connexes