Comment puis-je supprimer plusieurs lignes dans vi?

J’ai essayé de suivre ce qui suit:

Comment supprimer du texte sélectionné dans l’éditeur de 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?

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 que 5dd fonctionne comme prévu – c’est-à-dire enlevez cinq lignes consécutives commençant par le curseur – entrez-le en mode normal et ne préfixez pas les commandes avec 5dd

Je trouve cela plus facile

  1. Aller en mode VISUEL Shift + v
  2. Sélectionner des lignes
  3. d supprimer

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

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

 :[start_line_no],[end_line_no]d 

Note: d signifie supprimer

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

Par exemple:

 :45,101d 

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

Appuyez sur la touche Echap pour vous assurer que vous n’êtes pas en mode édition. Placez le curseur sur la première ligne à supprimer. Entrez “: 5dd”. La ligne actuelle et les quatre lignes suivantes doivent être supprimées.

Alternativement, si la numérotation des lignes est activée …

Appuyez sur la touche Echap pour vous assurer que vous n’êtes pas en mode édition. Entrez “: #, # d” où “#” représente les numéros de ligne de début et de fin à supprimer.

d5d “coupe” cinq lignes

Je jette juste le nombre au milieu comme:

d7l = supprimer 7 lettres

Si vous préférez une méthode de mode non visuel et que vous reconnaissez les numéros de ligne, j’aimerais vous suggérer une autre méthode simple.

Exemple

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

Ma méthode vous propose de taper une commande ci-dessous en mode commande:

 45Gd101G 

Ça lit:

Allez à la ligne 45 ( 45G ) puis supprimez le texte ( d ) de la ligne actuelle vers la ligne 101 ( 101G ).

Notez que sur vim vous pouvez utiliser gg au lieu de G

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

 :45,101d[enter] 

La commande ci-dessus de sa réponse nécessite 9 fois la saisie, y compris entrée , où ma réponse nécessite 8 à 10 fois la saisie. Ainsi, une vitesse de ma méthode est comparable.

Personnellement, je préfère moi-même 45Gd101G plus :45,101d parce que j’aime restr :45,101d à la syntaxe de la commande de vi, dans ce cas:

 +---------+----------+--------------------+ | syntax |  |  | +---------+----------+--------------------+ | command | 45G | d101G | +---------+----------+--------------------+ 

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

Par montant de ligne:

  • num d d – supprime les lignes numériques DOWN count initial à partir de la position actuelle du curseur (par exemple, 5 d d supprimera la ligne en cours et 4 lignes en dessous => supprimera la ligne en cours et les lignes ( num-1 ) en dessous )
  • num d k – supprimera num lignes UP de la ligne courante et de la ligne actuelle (par exemple, 3 d k supprimera la ligne actuelle et 3 lignes au-dessus de celle-ci => effacera la ligne actuelle et les lignes num au dessus )

Par numéros de ligne:

  • d num G – supprime les lignes de la ligne courante (inclusive) UP au numéro de ligne num (inclus) (par exemple, si le curseur est actuellement sur la ligne 5, d 2 G supprimera les lignes 2-5 inclus)
  • d num g g – supprime les lignes de la ligne courante (inclusive) DOWN vers le numéro de ligne num (inclus) (par exemple, si le curseur est actuellement sur la ligne 2 d 6 g g supprimera les lignes 2-6 incluses)
  • ( mode commande uniquement ) : num1 , num2 d – supprimera les lignes numéro de ligne num1 (inclus) DOWN au numéro de ligne num2 (inclus) . Note: si num1 est supérieur à num2 – vim réagira avec l’ Backwards range given, OK to swap (y/n)?

Si vous souhaitez supprimer une plage APRÈS un déclencheur de ligne spécifique, vous pouvez utiliser quelque chose comme ceci

 :g/^TMPDIR/ :.,+11d 

Cela supprime 11 lignes (inclus) après chaque rencontre de ^TMPDIR .

c’est dxd, pas ddx

si vous voulez supprimer 5 lignes, déplacez le curseur au début de la première ligne à supprimer et d5d

Pour supprimer toutes les lignes, utilisez – ESC gg dG Pour supprimer quelques lignes, disons 5 puis utilisez ESC 5dd