Comment supprimer le texte sélectionné dans l'éditeur vi

116

J'utilise PuTTY et l'éditeur vi. Si je sélectionne cinq lignes à l'aide de ma souris et que je souhaite supprimer ces lignes, comment puis-je faire cela?

Aussi, comment puis-je sélectionner les lignes à l'aide de mon clavier comme je le peux dans Windows où j'appuie Shiftet déplace les flèches pour sélectionner le texte? Comment puis-je faire cela en vi?

Peter Mortensen
la source
1
J'ai la liste des hommes imprimée mais je ne trouve pas comment supprimer le texte sélectionné
x Supprimer le caractère à droite du curseur X Supprimer le caractère à gauche du curseur D Supprimer jusqu'à la fin de la ligne dd Supprimer la ligne actuelle: d Supprimer la ligne actuelle de lagmonster.org/docs/vi.html j'espère que cela aide un peu
Mawg dit réintégrer Monica le
1
Des questions VIM sur le superutilisateur? LOL!
Pascal Thivent
1
@Pascal: hmm, ouais, tu as raison. Réponse joliment formatée, au fait. Oh, et sa question ne portait pas sur VIM, mais sur VI. ;)
Marcel Korpel

Réponses:

215

J'utilise PuTTY et l'éditeur vi. Si je sélectionne cinq lignes à l'aide de ma souris et que je souhaite supprimer ces lignes, comment puis-je faire cela?

Oubliez la souris. Pour supprimer 5 lignes, soit:

  • Allez à la première ligne et tapez d5d( ddsupprime une ligne, d5dsupprime 5 lignes) ~ ou ~
  • Tapez Shift-vpour entrer dans le mode de sélection de linewise , puis déplacez le curseur vers le bas à l' aide j(oui, l' utilisation h, j, ket lde se déplacer à gauche , vers le bas , en haut , à droite respectivement, qui est beaucoup plus efficace que d' utiliser les flèches) et tapez dsupprimer la sélection.

Aussi, comment puis-je sélectionner les lignes à l'aide de mon clavier comme je le peux dans Windows où j'appuie Shiftet déplace les flèches pour sélectionner le texte? Comment puis-je faire cela en vi?

Comme je l'ai dit, utilisez Shift-vpour entrer en mode de sélection par ligne ou vpour entrer en mode de sélection par caractère ou Ctrl-vpour entrer en mode de sélection par bloc. Passez ensuite avec h, j, ket l.

Je suggère de passer un peu de temps avec le Vim Tutor (run vimtutor) pour se familiariser avec Vim d'une manière très didactique.

Voir également

Pascal Thivent
la source
1
En fait, vim prend en charge la souris si votre terminal le prend en charge. Par exemple en utilisant le gpmdémon dans une console, ou en cours d'exécution xtermou konsoledans un environnement graphique, vous pouvez dire à vim set mouse=a(ou l'ajouter à votre .vimrc) et la souris peut être utilisée pour la sélection, le redimensionnement des divisions, etc.
Ben Voigt
@Ben Vous avez raison, je n'utilise pas du tout la souris mais cela ne veut pas dire que VIM ne peut pas y faire face (dans certaines circonstances). J'étais en train de supprimer cette partie inexacte de ma réponse pendant que vous tapiez.
Pascal Thivent
De plus, il est vraiment difficile de dire si votre V est capital ou non ... Je suggérerais de dire [Shift] + [V] pour la sélection du mode ligne.
Ben Voigt
Je sais que ça fait un certain temps, mais pourquoi l' utilisation h, j, ket lserait beaucoup plus efficace que d' utiliser les flèches? Je ne vois aucun problème en utilisant les flèches et le résultat final est le même. De plus, les flèches ont d'abord été conçues à cet effet, leur disposition est donc beaucoup plus intuitive (du moins pour moi)
Frederico Pantuzza
1
@FredericoPantuzza C'est une question de mouvement du bras à ce stade - le but est de garder les doigts sur les touches de la rangée d'accueil à tout moment. Devoir prendre votre bras droit et le faire glisser sur les touches fléchées pour les utiliser s'additionne au fil du temps.
AndrewF
59

Faites-le de la manière vi.

Pour supprimer 5 lignes, appuyez sur: 5dd (5 supprimer)

Pour les sélectionner (en fait les copier dans le presse-papiers), tapez: 10yy

C'est un peu difficile à comprendre, mais très pratique à apprendre lors de l'utilisation de ces terminaux distants

Soyez conscient des courbes d'apprentissage pour certains éditeurs:


(source: calver sur unix.rulez.org )

OscarRyz
la source
31

Si vous souhaitez supprimer à l'aide des numéros de ligne, vous pouvez utiliser:

:startingline, last line d

Exemple:

:7,20 d

Cet exemple supprimera les lignes 7 à 20.

Vladimir Verleg
la source
Je n'ai pas été au courant de cette astuce jusqu'à présent. Il fonctionne comme un charme! Merci!
Tung
13

La mise en surbrillance avec votre souris ne met en évidence que les caractères sur le terminal. VI n'obtient pas vraiment ces informations, vous devez donc mettre en évidence différemment.

Appuyez sur «v» pour accéder à un mode de sélection et utilisez les touches fléchées pour le déplacer. Pour supprimer, appuyez sur x. Pour sélectionner des lignes à la fois, appuyez sur Maj + v. Pour sélectionner des blocs, essayez ctrl + v. C'est bon, par exemple, pour insérer de nombreuses lignes de commentaires devant votre code :).

Je suis d'accord avec VI, mais il m'a fallu un certain temps pour m'améliorer. Mes collègues de travail m'ont recommandé cette feuille de triche . Je garde une impression sur le mur pour ces moments étranges où j'oublie quelque chose.

Bon piratage!

heymatthew
la source
6

Lorsque vous utilisez un terminal tel que PuTTY , les clics de souris et les sélections ne sont généralement pas transmis au système distant. Donc, vi n'a aucune idée que vous venez de sélectionner du texte. (Il y a des exceptions à cela, mais en général, les actions de la souris ne sont pas transmises.)

Pour supprimer plusieurs lignes dans vi, utilisez quelque chose comme 5ddsupprimer 5 lignes.

Si vous n'utilisez pas Vim , je vous recommande fortement de le faire. Vous pouvez utiliser la sélection visuelle, où vous appuyez sur Vpour démarrer un bloc visuel, déplacez le curseur à l'autre extrémité et appuyez sur dpour supprimer (ou toute autre commande d'édition, par exemple ypour copier).

Greg Hewgill
la source
1
@Justin L.: Utilisez <kbd>a</kbd>.
Greg Hewgill
1
Merci! : D Y en a-t-il d'autres cachés quelque part?
Justin L.
1
Putty est capable de transmettre des commandes de souris; la première phrase peut être obsolète.
congusbongus
3

Si vous souhaitez supprimer toutes les lignes d'un fichier de votre numéro de ligne actuel, utilisez dG, cela supprimera toutes les lignes (shift g)signifiant la fin du fichier

Syed
la source