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
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:
Par numéros de ligne:
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