145 votes

Comment supprimer plusieurs lignes dans vi ?

J'ai essayé de suivre ce qui suit :

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

mais

5dd

donne

E492 : Pas une commande d'éditeur : 5dd

J'ai alors essayé :

5d

Qui ne supprime qu'une seule ligne. Comment puis-je supprimer plusieurs lignes ?

196voto

KCD Points 1566

Je trouve cela plus facile

  1. Passer en mode VISUEL Shift + v
  2. Sélectionner les lignes
  3. d pour supprimer

https://superuser.com/questions/170795/how-can-i-select-and-delete-lines-of-text-in-vi

159voto

Bonnie Varghese Points 72

Vous pouvez supprimer plusieurs lignes si vous connaissez les numéros des lignes :

:[start_line_no],[end_line_no]d

Note : d signifie supprimer

où,
start_line_no est le numéro de la ligne de début que vous voulez supprimer et end_line_no est le numéro de la dernière ligne que vous voulez supprimer. Les lignes entre le début et la fin, y compris le début et la fin, seront supprimées.

Eg :

:45,101d

Les lignes entre 45 et 101, y compris 45 et 101, seront supprimées.

140voto

progo Points 6247

On dirait que vous entrez les commandes en mode commande (alias "mode Ex"). Dans ce contexte :5d supprimerait la ligne numéro 5, rien d'autre. Pour 5dd pour qu'elle fonctionne comme prévu -- c'est-à-dire qu'elle supprime cinq lignes consécutives commençant au curseur -- entrez-la en mode normal et ne faites pas précéder les commandes de la mention : .

20voto

Les commandes listées pour une utilisation en mode normal (préfixe avec : pour le mode commande).
Testé dans Vim.

Par montant de ligne :

  • num dd - supprimera num lignes vers le BAS à partir de la position actuelle du curseur (par ex. 5dd supprimera la ligne en cours et les 4 lignes qui se trouvent sous elle => supprime la ligne courante et ( num-1 ) lignes en dessous )
  • num dk - supprimera num lignes UP à partir de la ligne courante et de la ligne courante elle-même (par ex. 3dk supprimera la ligne en cours et les 3 lignes qui la précèdent. supprime la ligne courante et num lignes au-dessus )

Par numéros de ligne :

  • d num G - supprimera les lignes de la ligne actuelle (inclusivement) vers le haut jusqu'au numéro de ligne num (inclus) (par exemple, si le curseur est actuellement sur la ligne 5 d2G supprimera les lignes 2 à 5 incluses)
  • d num gg - supprimera les lignes de la ligne actuelle (inclusivement) vers le BAS jusqu'au numéro de ligne num (inclus) (par exemple, si le curseur est actuellement sur la ligne 2 d6gg supprimera les lignes 2 à 6 incluses)
  • ( mode commande uniquement ) : num1 , num2 d - supprimera les lignes numéro de ligne num1 (inclus) jusqu'au numéro de la ligne num2 (inclus) . Remarque : si num1 est supérieure à num2 - vim réagira avec Backwards range given, OK to swap (y/n)?

13voto

fronthem Points 2079

Si vous préférez une méthode non visuelle et reconnaissez les numéros de ligne, je vous propose une autre méthode simple.

Exemple

Je veux supprimer le texte de la ligne 45 à la ligne 101.

Ma méthode vous suggère de taper une commande ci-dessous en mode commande :

45Gd101G

Il se lit comme suit :

Allez à la ligne 45 ( 45G ) puis supprimer le texte ( d ) de la ligne en cours vers la ligne 101 ( 101G ).

Notez que le vim vous pouvez utiliser gg à la place de G .

Comparez avec la réponse de @Bonnie Varghese qui est :

:45,101d[enter]

La commande ci-dessus, tirée de sa réponse, nécessite 9 fois de taper, notamment enter alors que ma réponse nécessite 8 à 10 fois la saisie. Ainsi, la vitesse de ma méthode est comparable.

Personnellement, je préfère 45Gd101G sur :45,101d car j'aime m'en tenir à la syntaxe de la commande du vi, dans ce cas c'est :

+---------+----------+--------------------+
| syntax  | <motion> | <operator><motion> |
+---------+----------+--------------------+
| command |   45G    |        d101G       |
+---------+----------+--------------------+

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X