How can I delete a line without putting it into my default buffer?
Example:
line that will be copied.
line that I want to be substitued with the previous one.
What I'm trying to do:
yy
dd
p
But Vim replaces the recent copied string with the deleted (cutted) one. I know that I can use buffers like, "1yy
, dd
then "1p
, but I always forget to put the copied string in a buffer then I need to paste my contents first (line that will be copied) and then delete what I want (line that I want to be substituted with the previous one.)
How can I really delete a text in Vi(m) without copying it?
Another related question is how I can forward delete a word in insert mode? I want something similar to Ctrl+w.
Use the "black hole register",
"_
to really delete something:"_d
.Use
"_dP
to paste something and keep it available for further pasting.For the second question, you could use
<C-o>dw
.<C-o>
is used to execute a normal command wothout leaving insert mode.You can setup your own mappings to save typing, of course. I have these:
the following mappings will produce:
Also, it is a nice practice to have the "leader" key set to comma, e.g:
these 2 snippets will make ",d" be your new cut command.
If you would like to use these mappings togther with a shared system clipboard configuration, see further details at https://github.com/pazams/d-is-for-delete
When in visual mode,
x
will delete the selection, so if you want to delete a whole line, first pressV
to select the line in visual mode and then pressx
to delete the selection.That's one of the things I disliked about vim... I ended up mapping
dd
to the black hole register in my .vimrc and life has been good since:The black hole register
"_
will do the trick, but there is a better solution:When you enter the line back with the
p
command you are pasting the contents of the (volatile) default register""
, which has been overwritten bydd
. But you still can paste from the (non volatile) yank register"0
, which won't be overwritten by the delete commanddd
.So these are the commands you want to use as per your example:
You can use
"_d
to prevent things from overwriting your yanked text. You can store yanked or deleted text in whatever register you want with"
, and_
is the 'black hole' register, where you send stuff that you don't care about.For more information you can type
:help "_
or:help deleting