Comment puis-je supprimer rapidement une ligne dans VIM à partir de la position du curseur?

267

Je veux pouvoir supprimer le reste de la ligne sur laquelle je suis en commençant à la position du curseur dans VIM. Existe-t-il une commande simple pour ce faire?

Pour aider à illustrer, c'est avant la commande.

The quick brown dog jumps over the lazy fox.
     ^
     |----- Cursor is here.

C'est après la commande

The q
     ^
     |----- Cursor is here.
Anthony
la source

Réponses:

430

(Modifié pour inclure les bons ajouts des commentateurs :)

Dou son équivalent d$supprimera le reste de la ligne et vous laissera en mode commande. Cou c$supprimera le reste de la ligne et vous mettra en mode insertion, et un nouveau texte sera ajouté à la ligne.

Cela fait partie vitutoret vimtutor, d'excellentes "lectures" pour les débutants vim.

thiton
la source
1
Blast, j'ai pensé que c'était quelque chose de facile, je pensais à une combinaison de dsuivi de quelque chose. J'ai pensé qu'il serait plus rapide de poster la question ici et de bénéficier à d'autres personnes qui par défaut effectuent une recherche en ligne avant de lire le manuel.
Anthony
2
Ou C, la seule façon "réelle" d'obtenir le curseur à la position indiquée, bien que cela vous mette en mode insertion.
Walter
1
@Anthony: Il y a aussi un « dsuivi par quelque chose » de commande pour -équivalent D, où « quelque chose » est le $mouvement: d$.
ib.
2
Et si vous voulez vous retrouver en mode insertion, utilisez C(ou c$)
Benoit
7
Je me rends compte que cette solution a déjà été répondue, mais je cherchais un moyen de supprimer une ligne entière avec VIM et j'ai trouvé cela. L'option que je cherchais était en ddmode commande. J'espère que cela aidera tous ceux qui tomberont sur ce sujet.
Frito
41

Utilisez D. Voir les documents pour plus d'informations.

lucapette
la source
21

Vous pourriez également être intéressé C, cela supprimera également la fin de la ligne D, mais en plus, il vous mettra en mode Insertion à l'emplacement du curseur.

Xavier T.
la source
9

Exécuter en mode commande d$.

Robert Munteanu
la source
8
Dest une solution plus rapide pour cela.
Sedrik
5

C'est une très vieille question, mais comme le VIM est toujours pertinent, quelque chose devrait être clarifié.

Chaque réponse et commentaire ici en date d'octobre 2018 fait référence à ce qui serait communément appelé une action "couper", donc l'utilisation de l'un d'eux remplacera tout ce qui est actuellement dans le registre sans nom de VIM . Ce registre a tendance à être traité comme un presse-papier par défaut copier / coller, donc aucune de ces réponses ne fonctionnera comme vous le souhaitez si vous supprimez le reste d'une ligne pour coller quelque chose au même endroit par la suite, car tout ce qui vient d'être supprimé sera ensuite collé à la place de tout ce qui a été tiré auparavant.

La véritable commande de suppression dans le contexte de l'OP est "_D(ou "_Csi le mode d'insertion est souhaité) Cela envoie le contenu supprimé dans le registre de trou noir , désigné par "_, où il ne dérangera plus personne (bien que vous puissiez toujours annuler cette action en utilisantu ).

Cela étant dit, tout ce qui a été retiré en dernier est stocké dans le registre 0 , et même s'il est remplacé dans le registre sans nom, il peut toujours être collé à l'aide "0p.

En savoir plus sur le registre des trous noirs et les registres en général pour plus de plaisir VIM!

AFOC
la source
4

Dou ddsupprime et copie la ligne dans le registre. Vous pouvez utiliser Vxce qui supprime uniquement la ligne et reste en mode normal.

Bahman Eslami
la source