Comment supprimer (pas coupé) dans Vim?

Comment puis-je supprimer une ligne sans la mettre dans mon tampon par défaut?

Exemple:

line that will be copied. line that I want to be substitued with the previous one. 

Ce que j’essaye de faire:

 yy dd p 

Mais Vim remplace la récente chaîne copiée par la chaîne supprimée (coupée). Je sais que je peux utiliser des tampons comme "1yy , dd puis "1p , mais j’oublie toujours de mettre la chaîne copiée dans un tampon, puis je dois d’abord coller mon contenu (ligne qui sera copiée) puis supprimer ce que je veux (ligne que je veux remplacer par la précédente)

Comment puis-je vraiment supprimer un texte dans Vi (m) sans le copier?

Une autre question connexe est de savoir comment transférer un mot en mode insertion? Je veux quelque chose de similaire à Ctrl + w .

Utilisez le “registre de trous noirs”, "_ pour supprimer vraiment quelque chose: "_d .
Utilisez "_dP pour coller quelque chose et le garder disponible pour un collage ultérieur.

Pour la deuxième question, vous pouvez utiliser dw . est utilisé pour exécuter une commande normale sans quitter le mode insertion .

Vous pouvez, bien sûr, configurer vos propres mappages pour économiser de la saisie. J’ai ceux-ci:

 nnoremap d "_d xnoremap d "_d xnoremap p "_dP 

Le registre des trous noirs "_ fera l’affaire, mais il y a une meilleure solution:

Lorsque vous entrez la ligne avec la commande p vous collez le contenu du registre par défaut (volatile) "" , qui a été remplacé par dd . Mais vous pouvez toujours coller depuis le registre yank (non volatile) "0 , qui ne sera pas écrasé par la commande delete dd .

Donc, ce sont les commandes que vous souhaitez utiliser selon votre exemple:

 yy dd "0p 

C’est une des choses que je n’aimais pas à propos de vim … J’ai fini par mapper dd sur le registre de trous noirs dans mon fichier .vimrc et la vie a été bonne depuis:

 nnoremap d "_d vnoremap d "_d 

les mappages suivants produiront:

  • d => “supprimer”
  • leader d => “couper”
 nnoremap x "_x nnoremap d "_d nnoremap D "_D vnoremap d "_d nnoremap d ""d nnoremap D ""D vnoremap d ""d 

En outre, il est bon d’avoir la clé “leader” définie sur virgule, par exemple:

 let mapleader = "," let g:mapleader = "," 

ces 2 extraits feront “, d” votre nouvelle commande de coupe.

Si vous souhaitez utiliser ces mappages avec une configuration de presse-papiers système partagée, voir plus de détails à l’ adresse https://github.com/pazams/d-is-for-delete

Vous pouvez utiliser "_d pour éviter que les textes écrasés ne soient écrasés. Vous pouvez stocker du texte extrait ou effacé dans le registre de votre choix " , et _ est le registre “trou noir” dans lequel vous envoyez des fichiers qui vous intéressent .

Pour plus d’informations, vous pouvez taper :help "_ ou :help deleting

 yy Vx p 

En mode visuel, x supprimera la sélection. Si vous souhaitez supprimer une ligne entière, appuyez d’abord sur V pour sélectionner la ligne en mode visuel, puis appuyez sur x pour supprimer la sélection.