Dans Vim, quelle est la meilleure façon de sélectionner, supprimer ou commenter de grandes portions de texte multi-écran ?

StackOverflow https://stackoverflow.com/questions/58584

  •  09-06-2019
  •  | 
  •  

Question

La sélection d'une grande quantité de texte qui s'étend sur plusieurs écrans dans un IDE comme Eclipse est assez simple puisque vous pouvez utiliser la souris, mais quelle est la meilleure façon de, par exemple,sélectionnez et supprimez des blocs de texte multi-écrans ou écrivez par ex.trois grandes méthodes dans un autre fichier, puis supprimez-les à des fins de test dans Vim lorsque vous l'utilisez via putty/ssh où vous ne pouvez pas utiliser la souris ?

Je peux facilement tirer jusqu'à la fin d'une ligne ou jusqu'à la fin d'un bloc de code, mais si le texte s'étend sur plusieurs écrans ou contient beaucoup de lignes vides, j'ai l'impression que mon les mains sont liées dans Vim.Des solutions ?

Et une question connexe :existe-t-il un moyen de sélectionner 40 lignes, puis de les commenter toutes (avec "#" ou "//"), comme c'est le cas dans la plupart des IDE ?

Était-ce utile?

La solution

Eh bien, tout d'abord, vous pouvez définir vim travailler avec la souris, ce qui vous permettrait de sélectionner du texte comme vous le feriez dans Eclipse.

Vous pouvez également utiliser la sélection Visuel - v, par défaut.Une fois sélectionné, vous pouvez yank, cut, etc.

En ce qui concerne le commentaire du bloc, je le sélectionne généralement avec VISUAL, alors fais

:'<,'>s/^/# /

Remplacer le début de chaque ligne par un #.(Le '< et '> les marqueurs sont le début et et de la sélection visuelle.

Autres conseils

Utilisez des marqueurs.

Allez en haut du bloc de texte que vous souhaitez supprimer et saisissez

ma

n'importe où sur cette ligne.Pas besoin de côlon.

Allez ensuite à la fin du bloc et saisissez ce qui suit :

:'a,.d

Entrer ma a posé un marqueur a pour le caractère sous le curseur.

La commande que vous avez saisie après vous être déplacé vers le bas du bloc de texte indique "à partir de la ligne contenant le caractère décrit par le marqueur a ('un) à la ligne actuelle (.) dsupprimer."

Ce genre de chose peut également être utilisé pour d’autres choses.

:'a,.ya b     - yank from 'a to current line and put in buffer 'b'
:'a,.ya B     - yank from 'a to current line and append to buffer 'b'
:'a,.s/^/#/   - from 'a to current line, substitute '#' for line begin
(i.e. comment out in Perl)
:'s,.s#^#//#  - from 'a to current line, substitute '//' for line begin
(i.e. comment out in C++)

N.-B. 'a (apostrophe-a) fait référence à la ligne contenant le caractère marqué par a.``un(backtick-a) refers to the character marked byune`.

Pour insérer des commentaires, sélectionnez les premiers caractères des lignes à l'aide de CTRL-v (visuel par bloc, pas visuel par caractère 'v' ou visuel par ligne 'V').Passez ensuite en mode insertion en utilisant 'I', entrez votre ou vos caractères de commentaire sur la première ligne (par exemple '#') et enfin revenez en mode normal en utilisant 'Esc'.Voilà !

Pour supprimer les commentaires, utilisez blockwise-visual pour sélectionner les commentaires et supprimez-les simplement en utilisant 'X'.

Utilisez la commande de bloc visuel v (ou V pour les lignes entières et C-V pour les blocs rectangulaires).En mode bloc visuel, vous pouvez utiliser toutes les commandes de mouvement, y compris la recherche ;J'utilise fréquemment } pour passer à la ligne vide suivante.Une fois le bloc marqué, vous pouvez le transférer dans un fichier, le supprimer, le retirer ou autre.Si vous exécutez une commande et que le bloc visuel disparaît, resélectionnez le même bloc avec gv.Voir :help visual-change pour en savoir plus.

Je pense qu'il existe des scripts spécifiques au langage fournis avec vim qui font des choses comme commenter des blocs de code d'une manière qui correspond au langage de votre choix.

Presse V (V majuscule), puis appuyez sur 40j pour sélectionner 40 lignes, puis appuyez sur d pour les supprimer.Ou comme @zigdon l'a répondu, vous pouvez les commenter.

Le mode visuel est la solution à votre problème principal.En ce qui concerne les commentaires de sections de code, il existe de nombreux plugins pour cela sur vim.org, j'utilise actuellement tComment.vim.

Il existe également un moyen intéressant de commenter un bloc sans plugin.Disons que vous travaillez en python et que # est le caractère de commentaire.Faites une sélection de bloc visuel de la colonne dans laquelle vous souhaitez que le signe dièse se trouve et tapez I#ESCAPE.Pour entrer dans un mode de blocage visuel, appuyez sur C-q sous Windows ou C-v sous Linux.

Ou vous voudrez peut-être essayer ce script...

http://www.vim.org/scripts/script.php?script_id=23

Ma technique de blocage des commentaires :

Ctrl+V pour démarrer le mode visuel par blocs.

Faites votre sélection.

La sélection étant toujours active, Changement+je.Cela vous met en mode insertion de colonne.

Tapez les caractères de votre commentaire « # » ou « // » ou autre.

ÉCHAP.

Si vous souhaitez effectuer une action sur une plage de lignes et que vous connaissez les numéros de ligne, vous pouvez placer la plage sur la ligne de commande.Par exemple, pour supprimer les lignes 20 à 200, vous pouvez faire :

:20,200d

Pour déplacer les lignes 20 à 200 vers la ligne 300, vous pouvez utiliser :

:20,200m300

Et ainsi de suite.

Pour commenter les lignes, je suggérerais l'un de ces plugins :

Commentaire amélioré

Commentateur NERD

J'utilise davantage NERD ces jours-ci, mais j'utilise EnhancedCommentify depuis des années.

Utiliser Changement+V pour passer en mode visuel, vous pouvez alors sélectionner des lignes et les supprimer/modifier.

Ma méthode habituelle pour commenter 40 lignes serait de placer le curseur sur la première ligne et de saisir la commande :

:.,+40s/^/# /

(Car ici à 40 lignes vers l'avant, substituer le début de ligne par du hachage, l'espace) semble un peu plus long que certaines autres méthodes suggérées, mais j'aime faire les choses avec le clavier au lieu de la souris.

La première réponse n’est pas tout à fait correcte actuellement ?Pour commenter la sélection, appuyez

('<, '> - sera là automatiquement)

Vous devez connaître la commande du mode normal [count]CTRL-D.Il modifie éventuellement l'option « défilement » de 10 à [count], puis fait défiler autant de lignes.Pressage CTRL-D encore une fois, je ferai défiler à nouveau les mêmes lignes.

Alors essayez d'entrer

V     "visual line selection mode
30    "optionally set scroll value to 30
CTRL-D  "jump down a screen, repeated as necessary
y      " yank your selection

CTRL-U fonctionne de la même manière mais fait défiler vers le haut.

v entre en mode bloc visuel, où vous pouvez sélectionner comme avec shift dans la plupart des éditeurs courants, plus tard vous pouvez faire tout ce que vous pouvez normalement faire avec des commandes normales (substitution :'<,'>s/^/#/ pour ajouter un commentaire , par exemple) où '<,'> désigne le bloc visuel sélectionné au lieu de tout le texte.

les marques seraient les plus simples Mo par où veux-tu commencer et moi où tu veux finir, une fois que cela est fait, tu peux faire à peu près tout ce que tu veux

:'b,'ed

supprime du marqueur b au marqueur e

commenter 40 lignes que vous pouvez faire en mode visuel

V40j:s/^/#/

commentera 40 lignes à partir de l'endroit où vous démarrez la séquence

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top