J'ai essayé de suivre ce qui suit:
Comment supprimer le texte sélectionné dans l'éditeur de VI
mais
5dd
donne
E492: Pas une commande de l'éditeur: 5dd
J'ai alors essayé:
5d
Ce qui ne supprime qu'une seule ligne. Comment puis-je supprimer plusieurs lignes?
On dirait que vous entrez les commandes en mode commande (ou "mode Ex"). Dans ce contexte, :5d
supprime la ligne 5, rien d’autre. Pour que 5dd
fonctionne comme prévu (c’est-à-dire, supprimez cinq lignes consécutives en commençant par le curseur), entrez-le en mode normal et ne préfixez pas les commandes avec :
.
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
Remarque: d signifie supprimer
où,
start_line_no est la ligne de départ non que vous souhaitez supprimer et end_line_no est la dernière ligne non que vous souhaitez 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 dont 45 et 101 seront supprimées.
Commandes répertoriées pour une utilisation en mode normal (préfixe avec : pour le mode commande).
Testé dans Vim.
Par montant de ligne:
Par numéro de ligne:
Backwards range given, OK to swap (y/n)?
d5d "coupe" cinq lignes
J'ai l'habitude de jeter le numéro au milieu comme:
d7l = supprimer 7 lettres
Appuyez sur la Esc clé 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 vous avez activé la numérotation des lignes ...
Appuyez sur la Esc clé 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.
Si vous préférez une méthode en mode non visuel et que vous reconnaissez les numéros de ligne, j'aimerais vous suggérer un autre moyen 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
Ça lit:
Allez à la ligne 45 (
45G
), puis supprimez le texte (d
) de la ligne actuelle jusqu'à la ligne 101 (101G
).
Notez que sur vim
, vous pouvez utiliser gg
au lieu de G
.
Comparez avec la réponse de @Bonnie Varghese qui est:
:45,101d[enter]
La commande ci-dessus de sa réponse nécessite 9 fois de frappe, y compris enter, où ma réponse nécessite 8 à 10 fois de frappe. Ainsi, une vitesse de ma méthode est comparable.
Personnellement, je préfère moi-même 45Gd101G
à :45,101d
parce que j'aime bien respecter la syntaxe de la commande de vi, dans ce cas:
+---------+----------+--------------------+
| syntax | <motion> | <operator><motion> |
+---------+----------+--------------------+
| command | 45G | d101G |
+---------+----------+--------------------+
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 (incluses) après chaque rencontre de ^TMPDIR
.
c'est dxd, pas ddx
si vous souhaitez supprimer 5 lignes, placez le curseur au début de la première ligne à supprimer et d5d
Pour effacer toutes les lignes, utilisez - ESC gg dG Pour effacer quelques lignes, dites 5 puis utilisez ESC 5dd
Type :set number
(pour les lignes numérotées).